使用xpath和SimpleXMLElement返回空白结果


Using xpath with SimpleXMLElement returning blank result?

XML:

<A>
  <B type="source">
    <C>
      <D>
        <E ref="description">my_desc</E>
        <E>Some other E</E>
      </D>
    </C>
  </B>
</A>

PHP:

$doc = new SimpleXMLElement('URL.xml', null, true);
$path = $doc->xpath('A/B[@type="source"]/C/D/E[@ref="description"]');
var_dump ($path);

退货:

Array
(
)

最终,我试图用ref="description"来获得<E>的内部值。我做错了什么?以下指南来自:http://php.net/simplexmlelement.xpath

使用您提供的XML,以下代码将打印出E:的字符串值

$doc = new SimpleXMLElement('URL.xml', null, true);
$path = $doc->xpath('/A/B[@type="source"]/C/D/E[@ref="description"]');
echo $path[0];

您需要以/开始查询,以指定文档根。

您也可以查询//E[@ref="description"]来查找所需的所有E元素。