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 关注
- 100 浏览
添加回答
举报