1
我想根據子節點值從XML中刪除節點。從XML中刪除具有特定值的節點
這是我的XML結構:
<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
<loc></loc>
<prority></priority>
<lastmod></lastmod>
</url>
<url>
<loc></loc>
<prority></priority>
<lastmod></lastmod>
</url>
<url>
<loc></loc>
<prority></priority>
<lastmod></lastmod>
</url>
</urlset>
這是我的PHP:
<?php
$xml = simplexml_load_string($args);
$nodes = $xml->children();
foreach ($nodes as $node) {
if ((strpos($node->loc, 'cHash') || strpos($node->loc, 'index.php')) !== FALSE) {
$loc = dom_import_simplexml($node->loc);
$loc->parentNode->removeChild($loc);
}
}
$args = $xml->asXML();
?>
我搜索 「cHash」 和 「的index.php」,「祿的字符串值內「然後我想刪除父元素url(和所有的孩子),如果是這樣的話。該條件正在工作,但我不能選擇整個url節點刪除。這個PHP代碼片段只刪除「loc」節點。首先,我嘗試了unset()
,因爲有很多帖子都提到過,但沒有奏效。所以我得到了這個,將它導入到DOM元素,然後刪除它。
我想應該是這樣的:
$loc = dom_import_simplexml($node->loc);
$loc->parentNode->parentNode->removeChild($loc->parentNode);
或本:
$loc = dom_import_simplexml($node->loc);
$url = dom_import_simplexml($node);
$url->parentNode->removeChild($url);
It's試驗和錯誤,請幫忙!