亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php xml XPath foreach 返回所有節點而不是迭代

php xml XPath foreach 返回所有節點而不是迭代

PHP
UYOU 2023-04-28 16:19:07
我有一個這樣的 XML 文件<Articles> <Article>  <ArticleTitle>    First Book </ArticleTitle></Article> <Article>  <ArticleTitle>    Second Book </ArticleTitle></Article>并使用這種類型的 php 腳本以迭代方式檢索 ArticleTitle 的內容foreach ($xml->Article as $Article){$title = $Article->xpath('//ArticleTitle');echo $title[0];}但這顯示First BookFirst Book代替First BookSecond Book我假設在foreach ($xml->Article as $Article)啟動時它將獲取每個 Article 節點,然后我可以訪問該節點的內容,但這不是正在發生的事情。我究竟做錯了什么?
查看完整描述

2 回答

?
慕婉清6462132

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

查看完整回答
反對 回復 2023-04-28
?
浮云間

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


查看完整回答
反對 回復 2023-04-28
  • 2 回答
  • 0 關注
  • 127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號