0
У меня есть файл XMLУдаление узла из XML-файла
<?xml version="1.0"?>
<category>
<name>SWEATERS</name>
<name>WATCHES</name>
<name>PANTS</name>
<name>test</name>
<name>1</name>
</category>
Как я могу удалить узел <name>test</name>
с помощью XPath, XQuery и PHP. Я использовал этот код
$name='test;
$xmlfile="config/shop_categories.xml";
$xml = simplexml_load_file($xmlfile);
$target = $xml->xpath('/category[name="'.trim($name).'"]');
print_r($target[0]);
if($target == false)
return;
$domRef = dom_import_simplexml($target[0]); //Select position 0 in XPath array
$domRef->parentNode->removeChild($domRef);
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
$dom->save($xmlfile);
Но он не работает.
Основная проблема заключается в том, что ваш XPath запрос возвращает 'category' узел, а не' name', как вы хотели. Ответ Гордона не упоминает об этом (на момент написания статьи), но исправляет проблему. – salathe
@ salathe right, на самом деле я не обращал внимания на эту деталь, потому что этот симплекс для dom mishmash не имел для меня никакого смысла. – Gordon
@Gordon, не беспокойтесь. Теперь OP имеет ответ * и * исправление. :) – salathe