Я пытаюсь удалить узел XML с помощью PHP (SimpleXML).Удалить узел XML с SimpleXML, PHP
Это мой XML:
<?xml version="1.0"?>
<items>
<a>
<name>A1</name>
<b>
<title>Item1</title>
<url>item1</url>
</b>
<b>
<title>Item2</title>
<url>item2</url>
</b>
<b>
<title>Item3</title>
<url>item3</url>
</b>
</a>
<a>
<name>A2</name>
<b>
<title>Item1</title>
<url>item1</url>
</b>
</a>
</items>
и это мой PHP код:
<?php
$xml = simplexml_load_file($_GET["xml"]);
$sxe = new SimpleXMLElement($xml->asXML());
$ID = $_GET["ID"];
$i = -1;
$num = $_GET["num"];
foreach ($sxe->children() as $var) {
if ($var == $ID) {
foreach ($var->children() as $data) {
if ($data == "link") {
$i++;
if ($i == $num) {
if (! empty($sxe)) {
unset($sxe[0]);
}
}
}
}
}
}
$sxe->asXML($_GET["xml"]);
?>
Этот код ищет с данными $ ID (например, $ ID = "A1") , Узел, который он хочет удалить, - это узел (с его и), который является узлом # $ num.
Пример: если $ ID = "A1" и $ num = 1, , ему необходимо удалить узел с заголовком "Item2" и url "item2".
Что я делаю неправильно?
Спасибо!
ли $ Обл файл XML? (file.xml) или загрузить его в $ str? ($ xml = simplexml_load_file ($ _ GET ["xml"]); $ str = new SimpleXMLElement ($ xml-> asXML());) –
Предупреждение: simplexml_load_string(): Entity: строка 1: ошибка парсера: ожидается начальный тег , '<' не найден в deletenode.php на линии 72 Предупреждение: simplexml_load_string(): links.xml в deletenode.php на линии 72 Предупреждение: simplexml_load_string():^в deletenode.php на линии 72 Fatal error: вызов функции-члена xpath() для не-объекта в deletenode.php в строке 73 (72 is $ sxe = simplexml_load_string ($ xml);) –
Вы можете сохранить свой код: '$ xml = simplexml_load_file ($ _GET [ "XML"]); $ sxe = new SimpleXMLElement ($ xml-> asXML()); ' – splash58