删除 PHP 中的 XML 节点 [重复]
Posted
技术标签:
【中文标题】删除 PHP 中的 XML 节点 [重复]【英文标题】:Remove XML nodes in PHP [duplicate] 【发布时间】:2014-04-05 02:01:58 【问题描述】:我正在试验 php 的 SimpleXML,我想知道一些事情。 XML 文档是这样的:
<?xml version="1.0" standalone="yes"?>
<users>
<user id="1">
<name>Jan</name>
<sex>Male</sex>
<password>fu9f8w9080fd9id9di093r9f9if9if9d0sfu</password>
<avatar type="remote">http://www.avatars.com/av_1.gif</avatar>
</user>
<user id="3">
<name>Piet</name>
<sex>Male</sex>
<password>fu9f8w9080fd9id9di093r9f9if9676674bv</password>
<avatar type="local">html/avatars/Eten%20en%20drinken/cola.png</avatar>
</user>
<user id="4">
<name>Ilse</name>
<sex>Female</sex>
<password>fu9f8w9080fd9id9di4564564564539d0sfu</password>
<avatar type="none"/>
</user>
<user id="5">
<name>Els</name>
<sex>Female</sex>
<password>fu9f8w9080fd9id9di09gi5uy378wrfuih4w</password>
<avatar type="upload">avatar_1.gif</avatar>
</user>
</users>
我做了一个降序 for 循环来删除所有女性用户,但我想知道是否还有其他方法,使用 foreach 遍历用户或使用 xpath 选择所有女性记录并一次性删除。
另外,我想知道您是否可以在不遍历所有用户的情况下删除所有节点。
到目前为止,我发现“removeChild”在 simpleXML 中不起作用,或者我错过了什么。
谢谢,
科恩杰
【问题讨论】:
【参考方案1】:其实PHP中没有removeChild:http://www.php.net/manual/en/book.simplexml.php
您可以使用xpath
进行选择,然后使用循环和unset
:
$xml = simplexml_load_string($x); // assume XML in $x
$females = $xml->xpath("/users/user[sex = 'Female']");
foreach ($females as $female) unset($female[0]);
看到它的工作:https://eval.in/108813
【讨论】:
以上是关于删除 PHP 中的 XML 节点 [重复]的主要内容,如果未能解决你的问题,请参考以下文章