繁体   English   中英

xpath查询到xpath查询结果

[英]xpath query to xpath result of query

例如,我们有这个xml:

<body>
        <a>
            <b>
                <c>hello</c>
                <c>world</c>
            </b>
        </a>
        <a>
            <b>
                <c>another hello</c>
                <c>world</c>
            </b>
        </a>
</body>

通过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;
      }

}

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

对于你的第二个XPath,请尝试这样: $ctags = $xpath->query("c", $b);

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

罗伯特惠没有错

FYI //b选择文档中任何位置类型b的所有元素,但使用/表示选择根节点,因此/b/c尝试选择具有子节点c根节点c 根节点是body元素。

到达第二个查询时,您已经处于'b'元素。 您的代码正在寻找的是“// b / b / c”。 请尝试在第二个查询中使用“/ c”。 如果你不打算用“b”做任何事情,你也可以用“// b / c”将它移动到一个查询中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM