我正在尝试使用SimpleXML for PHP,我对此感到疑惑。 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>
我做了一个降序循环以删除所有女性用户,但我想知道是否有其他方法,使用foreach迭代用户或使用xpath选择所有女性记录并立即删除它们。
另外,我想知道你是否可以在不迭代所有用户的情况下删除所有节点。
到目前为止,我已经发现“removeChild”在simpleXML中不起作用,或者我错过了什么。
谢谢,
Coenj
答案 0 :(得分:0)
事实上,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