用php删除xml文件的节点

时间:2015-02-06 17:52:44

标签: php xml

我试图用php删除部分xml文件。 links.xml文件如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<pages>
<link url="http://example.com">
<title>Who won the world series</title>
</link>
<link url="http://anotherexample.com">
<title>Who won the super bowl</title>
</link>
</pages>

如您所见,我在上面的文件中有两个不同的条目。在我的实际文件中,我有很多这些。我想要做的是,使用php从文件中删除一个<link>节点。我怎么能去做呢?

2 个答案:

答案 0 :(得分:2)

我通过查看this question想出了如何做到这一点。 你可以这样做:

<?php
$fild = '../XML/link.xml';
$sxe = simplexml_load_file($file);

$nodeURL = $sxe->xpath('link[@url="http://example.com"]');
$noteToRemove = $nodeURL[0];
unset($noteToRemove[0]);

$sxe->asXML($file);
?>

这适用于我在上面添加的xml文件

答案 1 :(得分:0)

使用DOM + XPath很容易:

$dom = new DOMDocument();
$dom->load($sourceFile);
$xpath = new DOMXPath($dom);

foreach ($xpath->evaluate('//link[@url="http://example.com"]') as $node) {
  $node->parentNode->removeChild($node);
}

echo $dom->save($targetFile);