2011-11-29 80 views
0

最好看我有这样的XMLPHP的XML DOM使用XPath

<App> 
<Id id="129"/> 
<Path id="category/self"/> 
<Screenshots> 
    <Screenshot url="small_480x320_34eaefb6c934a0d82da637bec2276bdd_ebecfca09179d055ed4d3cf15a41bf7c-8f95512356608b888f288b374db7b37fabb3ce27.jpg"/> 
    <Screenshot url="small_480x320_438a9e1352bda4ef9724ae422473a556_615625ab835b09aa712e9c84c056cd7a-15bc8803724197129aea59577cac334736fadd3f.jpg"/> 
    <Screenshot url="small_480x320_ce4d635a786e427983c30f1abd8617a1_4d9b74b7f8ffa9ca19d64bee4a9592b9-36a9e665b0546b09e5496a5d02ba5e1bcd0bf563.jpg"/> 
    <Screenshot url="small_480x320_3e95d91de62aa2c52e4ff7f32a10a1d9_8a39c9eb9fa2bc2d5f5e789705713e12-a5ec1865bc88c6569af106d9131b45f1f82f8a1b.jpg"/> 
    <Screenshot url="small_480x320_3776b5fc7eceed4da9256105889578a3_4265bb97bda45a213357341ddaa81ce9-dae64333deb2cc09f69d0e74e79f4def199caaa2.jpg"/> 
</Screenshots> 
</App> 

,我想分析它,并有

$Id = "129"; 
$Path = "category/self"; 
$Screenshots = array(... screenshots ... all 5 of them); 

现在...我有没有问题,XSLT例如这样做,但是在阅读文档后我不完全理解DOM。所有我迄今是

是此XPath事情http://codepad.org/BtvNEnjl只是读取标签之间的值,我不知道如何使它为“的foreach”这......

回答

3
$xml = simplexml_load_string($str); // or use simplexml_load_file() 

$id = (string) $xml->Id['id']; 
$path = (string) $xml->Path['id']; 

$screenshots = array(); 
foreach($xml->xpath('/App/Screenshots/Screenshot') as $screenshot) 
{ 
    $screenshots[] = (string) $screenshot['url']; 
} 
+0

你是舒尔的SimpleXML是一个解决方案?我的前任老师说,我应该避免简单的XML,并且只能使用dom – Master345

+0

@RowMinds:关于SimpleXML的唯一“问题”,我能想到的是,如果XML不完美,它会大声喊叫。您应该查看PHP.net中的[this page](http://php.net/manual/simplexml.examples-errors.php),了解错误处理。 –

+0

多数民众赞成在xslt相同,谢谢,我应该试试 – Master345