1
我发布了一个关于如何绘制属性值的问题。即使我认为我不能删除具有此属性的元素。我尝试搜索,但仍然找不到合适的工作答案。我真的希望你能帮助我。这是我的代码。我通过xml文档查找属性值,然后尝试删除具有此属性值的节点的父节点。如何删除SimpleXMLElement?
$xml = new SimpleXMLElement($xmlfile,0,true);
$results = $xml->xpath("/presets/preset");
foreach ($results as $result) {
foreach ($result->children() as $second_gen) {
if($second_gen->getName()=='name'){
foreach($second_gen->attributes() as $a => $b) {
if($b==$preset_name){
echo($b);
echo($preset_name);
unset($result);
}
}
}
}
}
$xml->asXML();
由于这段代码执行的结果我没有得到任何错误,我有正确的$b
和$preset_name
呼应。但节点没有被删除。它仍然在文件中。
我的XML文件看起来像:
<presets>
<preset>
<name code="default">Default</name>
<createdBy>p</createdBy>
<icons>q</icons>
</preset>
<preset>
<name code="new_preset">New Preset</name>
<createdBy>x</createdBy>
<icons>y</icons>
</preset>
...
</presets>
'unset($ result);' - 结果是一个数组。取消设置不会删除阵列以外的任何内容。如果你想删除那个xpath返回的simpleXMLElement,只需看看:[PHP SimpleXML - 删除xpath节点](http://stackoverflow.com/a/4137027/367456) - 如果你写的xpath表达式更具表现力,甚至可以减少你的代码。 – hakre 2013-06-24 03:17:52