xpath查询到xpath查询结果

nuk*_*ukl 2 php xml xpath

例如,我们有这个xml:

<body>
        <a>
            <b>
                <c>hello</c>
                <c>world</c>
            </b>
        </a>
        <a>
            <b>
                <c>another hello</c>
                <c>world</c>
            </b>
        </a>
</body>
Run Code Online (Sandbox Code Playgroud)

通过Xpath查询,我们可以找到所有"B"-tags.但是,我们需要在每个找到的"B"标签中找到所有"C"标签.我写了这段代码:

$dom = new DOMDocument();
$dom->loadXML($xml);

$xpath = new DOMXPath($dom);
$btags = $xpath->query("//b");

foreach ($btags as $b)
{
  $ctags = $xpath->query("/b/c", $b);
      foreach ($ctags as $c) {
        echo $c->nodeValue;
      }

}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.用XPath查询可以做到这一点吗?

Rob*_*Hui 8

对于您的第二个XPath,请尝试以下方法: $ctags = $xpath->query("c", $b);

第二个XPath已经相对于'b'节点...如果我没有弄错,PHP XPath语句中的相对路径要求省略前导'/'.