使用Xpath拉取给定节点的文本和属性

Sco*_*reu 5 php xpath dom

我正在使用PHP和xpath从API调用解析XML结果.

 $dom = new DOMDocument();
 $dom->loadXML($response->getBody());

 $xpath = new DOMXPath($dom);
 $xpath->registerNamespace("a", "http://www.example.com");

 $hrefs = $xpath->query('//a:Books/text()', $dom);

 for ($i = 0; $i < $hrefs->length; $i++) {
      $arrBookTitle[$i] = $hrefs->item($i)->data;
 }

 $hrefs = $xpath->query('//a:Books', $dom);

 for ($i = 0; $i < $hrefs->length; $i++) {
      $arrBookDewey[$i] = $hrefs->item($i)->getAttribute('DeweyDecimal');
 }
Run Code Online (Sandbox Code Playgroud)

这有效,但有一种方法我可以从一个查询访问文本和属性?如果是这样,一旦执行查询,您如何获得这些项目?

Sco*_*reu 4

环顾四周后,我发现了这个解决方案。这样我就可以获取元素文本并访问节点的任何属性。

$hrefs = $xpath->query('//a:Books', $dom);

for ($i = 0; $i < $hrefs->length; $i++) {
    $arrBookTitle[$i] = $hrefs->item($i)->nodeValue;
    $arrBookDewey[$i] = $hrefs->item($i)->getAttribute('DeweyDecimal');
}
Run Code Online (Sandbox Code Playgroud)