1 回答

TA貢獻2036條經驗 獲得超8個贊
getElementsByTagName()將返回“實時”結果。如果您修改文檔,它將發生變化。您可以用來iterator_to_array()制作穩定的副本。
另一種選擇是使用 Xpath 表達式來獲取特定節點。
$document = new DOMDocument();
$document->loadXML($xmlString);
$xpath = new DOMXpath($document);
// fetch items that contain "filter" in their description
$items = $xpath->evaluate('/rss/channel/item[contains(description, "filter")]');
foreach ($items as $item) {
// dump the title child element text content
var_dump($xpath->evaluate('string(title)', $item));
}
// fetch items that do not contain "filter" in their description
$items = $xpath->evaluate('/rss/channel/item[not(contains(description, "filter"))]');
foreach ($items as $item) {
// remove item element
$item->parentNode->removeChild($item);
}
echo $document->saveXML();
輸出:
string(8) "Title #1"
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Title</title>
<link/>
<item>
<title>Title #1</title>
<description>Here I want to filter</description>
</item>
</channel>
</rss>
- 1 回答
- 0 關注
- 198 瀏覽
添加回答
舉報