Я задал вопрос относительно того, как изображать значения атрибутов раньше. Хотя я решил, что не могу удалить элемент, который имеет этот атрибут. Я пытаюсь найти, но все же я не могу найти правильный рабочий ответ. Я очень надеюсь, что ты сможешь мне помочь. Это мой код. Я хожу, хотя 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);' - Результат - массив. Отсоединение от него не удалит ничего кроме массива. Если вы хотите удалить simpleXMLElement, который был возвращен этим xpath, просто посмотрите: [PHP SimpleXML - Удалить узел xpath] (http://stackoverflow.com/a/4137027/367456) - Если вы написали выражение xpath более выразительным, даже может уменьшить ваш код в целом. – hakre