Php xml DOM:删除带有条件的元素
在许多问题中,这个问题可能已经以某种方式或另一种方式得到了回答,但由于我是XML方面的新手,我无法在我的项目中找到答案 我有一个RSS(XML)文件,其结构如下:Php xml DOM:删除带有条件的元素,php,xml,Php,Xml,在许多问题中,这个问题可能已经以某种方式或另一种方式得到了回答,但由于我是XML方面的新手,我无法在我的项目中找到答案 我有一个RSS(XML)文件,其结构如下: <rss> <channel> <item> <title>some title</title> <description> some descrp </descri
<rss>
<channel>
<item>
<title>some title</title>
<description> some descrp </description>
...
</item>
</channel>
</rss>
一些头衔
一些描述
...
在PHP中,当标题等于某个值时,如何删除某个项目?谢谢
EDIT1:我的XML文件存储在我的web服务器上。谢谢你的帮助,但我想导入我的XML文件,它比我写的要大,只是为了显示它的结构。我尝试了$doc->loadXML(“new2.xml”);但它似乎不起作用?@hafedh:您必须使用
$doc->load(“new2.xml”)
@Saxoier:非常感谢,它可以工作,但由于它没有保存在文件中,新的“数据”显示在我的php页面上,但xml文件仍然包含所有项?
$rss = "
<rss>
<channel>
<item>
<title>some title</title>
<description> some descrp </description>
</item>
<item>
<title>some other title</title>
<description> some descrp </description>
</item>
</channel>
</rss>
";
$doc = new DOMDocument();
$doc->loadXML($rss);
$xpath = new DOMXPath($doc);
$els = $xpath->query('//title[text()="some title"]');
foreach($els as $el)
{
$parent = $el->parentNode;
$parent->parentNode->removeChild($parent);
}
echo $doc->saveXML();
$doc = new DOMDocument();
$doc->loadXML($rss);
$els = $doc->getElementsByTagName('title');
for($i = $els->length-1; $i >= 0; $i--)
{
$el = $els->item($i);
if ($el->nodeValue == 'some title')
{
$parent = $el->parentNode;
$parent->parentNode->removeChild($parent);
}
}
echo $doc->saveXML();