我正在使用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');
 }

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

最佳答案

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

$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');
}

关于php - 使用Xpath提取给定节点的文本和属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/141913/

10-09 23:29