2 回答

TA貢獻1804條經驗 獲得超2個贊
您的問題是您使用的 xpath 是絕對路徑(以 開頭/),因此您從子節點調用它這一事實沒有任何效果。您應該使用相對路徑,在這種情況下,要么簡單地ArticleTitle就足夠了,要么.//ArticleTitle允許Article和之間的其他節點ArticleTitle。例如:
foreach ($xml->Article as $Article){
? ? $title = $Article->xpath('ArticleTitle');
? ? echo $title[0];
}
foreach ($xml->Article as $Article){
? ? $title = $Article->xpath('.//ArticleTitle');
? ? echo $title[0];
}
兩種情況下的輸出都是:
First Book
Second Book

TA貢獻1829條經驗 獲得超4個贊
這也適用于您原來的 XPath 表達式:
$xml = <<<'XML'
<Articles>
<Article>
<ArticleTitle>First Book</ArticleTitle>
</Article>
<Article>
<ArticleTitle>Second Book</ArticleTitle>
</Article>
</Articles>
XML;
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
$elements = $xpath->query('//ArticleTitle');
foreach($elements as $element)
echo ($element->nodeValue), "\n";
?>
輸出 :
First Book
Second Book
- 2 回答
- 0 關注
- 127 瀏覽
添加回答
舉報