最好使用xPath读取PHP DOM XML


PHP DOM XML read preferably with xPath

我有这个xml

<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"它…

$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'];
}