簡體   English   中英

XML上的php xpath

[英]php xpath on XML

我怎樣才能做到這一點:

<root>
<gallery name="First">
 <picture active="1" detail="not shown"/>
 <picture active="1" detail="not shown"/>
 <picture active="0" detail="not shown"/>
</gallery>
<gallery name="Second">
 <picture active="0" detail="not shown"/>
 <picture active="1" detail="SHOW THIS ONE"/>
 <picture active="1" detail="AND SHOW THIS ONE" />
</gallery>
</root>

我正在努力:

$myArray = $objXML->xpath('gallery[@name="Second"]/picture[@active=1]');

如何更改它以獲得所需的輸出? 謝謝,安迪

你的XPath錯了。 要么使用

/root/gallery[@name="Second"]/picture[@active=1]

僅從根節點匹配此節點星座或

//gallery[@name="Second"]/picture[@active=1]

在文檔中的任何位置匹配此節點星座(較慢)

完整的工作示例:

$dom = new DOMDocument;
$dom->load('NewFile.xml'); // containing your XML
$xp = new DOMXPath($dom);
$pictures = $xp->query('/root/gallery[@name="Second"]/picture[@active=1]');
foreach ($pictures as $picture) {
    echo $dom->saveXml($picture), PHP_EOL;
}

<picture active="1" detail="SHOW THIS ONE"/>
<picture active="1" detail="AND SHOW THIS ONE"/>

$sxe = new SimpleXMLElement('NewFile.xml', NULL, TRUE);
$pictures = $sxe->xpath('/root/gallery[@name="Second"]/picture[@active=1]');
foreach ($pictures as $picture) {
    echo $picture['detail'], PHP_EOL;
}

SHOW THIS ONE 
AND SHOW THIS ONE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM