Удаление элемента из XML-файла формы в PHP
Я пытался выяснить это с помощью предыдущих ответов, но я не могу сделать это заранее, я следовал за ответом Стефана Удалить ребенка с определенным атрибутом в SimpleXML для PHP
и мой код
XML:
<?xml version="1.0" encoding="utf-8"?>
<res>
<items>
<item>
<id>1</id>
<a>asdasda</a>
</item>
<item>
<id>1</id>
<a>bababba</a>
</item>
<id>2</id>
<a>sasdasda</a>
</item>
<item>
<id>3</id>
<a>sasdasda</a>
</item>
<item>
<id>4</id>
<a>sasdasda</a>
</item>
<item>
<id>5</id>
<a>sasdasda</a>
</item>
<item>
<id>6</id>
<a>sasdasda</a>
</item>
</items>
</res>
и php это
<?php
$id="1";
$xml = simplexml_load_file("filtracjaxml.xml") ;
foreach($xml->items->item->id as $id)
{
if($id == '1') {
$xml=dom_import_simplexml($id);
$xml->parentNode->removeChild($xml);
}
}
echo $xml->asXml();
?>
когда я пытаюсь запустить его, у меня есть
Fatal error: Call to undefined method DOMElement::asXml() in filtruj.php on line 14
РЕДАКТИРОВАТЬ:
То, что я хочу, это удалить весь "элемент", а не только "идентификатор" - все элементы с id = 1
поэтому я изменил код:
foreach ( $xml->items->item as $id )
{
if ( $id->id == '1' ) {
$tmp = dom_import_simplexml($id);
$tmp->parentNode->removeChild($tmp);
}
}
echo $xml->asXml();
и он удаляет только первый элемент. Не могли бы вы сказать мне, почему? что не так в коде, написанном выше?
1 ответ
Решение
<?php
$id="1";
$xml = simplexml_load_file("filtracjaxml.xml") ;
foreach ( $xml->items->item->id as $id )
{
if ( $id == '1' ) {
$tmp = dom_import_simplexml($id);
$tmp->parentNode->removeChild($tmp);
}
}
echo $xml->asXml();
?>