簡體   English   中英

PHP和Xpath - 從內部文本中獲取節點

[英]PHP and Xpath - Get node from inner text

我有以下XML結構

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

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

我的目標是從它的內部文本(即some-text )或其中的一部分(即other-text )獲取loc節點。 這是我最好的嘗試:

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

是否可以在不迭代所有節點的情況下獲取特定的loc節點,只需使用xpath查詢?

是的,您可以使用類似//url/loc[contains(., "other-text")]


例:

$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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM