XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <root> <pages> <page><title>Home</title><content>Lorem Ipsum</content></page> <page><title>Pictures</title><content>Lorem Ipsum</content></page> <page><title>Information</title><content>Lorem Ipsum</content></page> </pages> <css> <css-tag><title>background-color</title><value>#FFF</value></css-tag> </css> <layout>1</layout> </root>
PHP:
$title = $_GET['0']; $xml = new DOMDocument('1.0', 'ISO-8859-1'); $xml->formatOutput = true; $xml->preserveWhiteSpace = true; $xml->load($location); $pages = $xml->getElementsByTagName("page"); foreach($pages as $page){ $pagetitle = $page->getElementsByTagName("title"); $pagetitlevalue = $pagetitle->item(0)->nodeValue; if($title == $pagetitlevalue){ $pagetitle->item(0)->parentNode->removeChild($pagetitle->item(0)); } } $xml->save($location);
Этот код избавляется только от узла <Title>
, как его можно изменить, чтобы избавиться от родительского узла <Page>
?
Я не могу понять, как это сделать, мне просто удастся избавиться от узла заголовка и получить множество кодов ошибок
Хотя это то, что я, вероятно, использовал бы xpath, вы можете найти …
$pagetitle->item(0)->parentNode->removeChild($pagetitle->item(0));
и заменить на …
$pagetitle->item(0)->parentNode->parentNode->removeChild($pagetitle->item(0)->parentNode);
перейти на один уровень выше в вашем XML-дереве