PHP和Xpath-从内部文本获取节点

PHP和Xpath-从内部文本获取节点,php,xml,xpath,domdocument,Php,Xml,Xpath,Domdocument,我有以下XML结构 <url> <loc>some-text</loc> </url> <url> <loc>some-other-text</loc> </url> 只需使用xpath查询,就可以在不遍历所有节点的情况下获取特定的loc节点吗?是的,您可以使用类似//url/loc[包含(,“其他文本”)] 例子: $xml=saveXML($node); } 输出: 其他一些文本

我有以下XML结构

<url>
  <loc>some-text</loc>
</url>

<url>
  <loc>some-other-text</loc>
</url>

只需使用xpath查询,就可以在不遍历所有节点的情况下获取特定的
loc
节点吗?

是的,您可以使用类似
//url/loc[包含(,“其他文本”)]


例子:
$xml=saveXML($node);
}

输出:
其他一些文本
$doc = new DOMDocument('1.0','UTF-8');
$doc->load($filename);
$xpath = new Domxpath($doc);
$locs = $xpath->query('/url/loc');

foreach($locs as $loc) {
    if(preg_match("/other-text/i", $loc->nodeValue)) return $loc->parentNode;
}
$xml = <<<'XML'
<root>
<url>
  <loc>some-text</loc>
</url>

<url>
  <loc>some-other-text</loc>
</url>
</root>
XML;

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

foreach ($xpath->query('//url/loc[contains(., "other-text")]') as $node) {
    echo $dom->saveXML($node);
}
<loc>some-other-text</loc>