Я пытаюсь удалить все NodePrices, которые не соответствуют определенному NodeName, для этого примера Place2. Вот пример XML
<DocHeader>
<DocTitle>Node Price Report</DocTitle>
<DocRevision>1</DocRevision>
<DocConfidentiality>
<DocConfClass>PUB</DocConfClass>
</DocConfidentiality>
<CreatedAt>2018-02-03T13:02:01</CreatedAt>
</DocHeader>
<DocBody>
<NodePrices>
<NodeName>Place1</NodeName>
<Contact>Employee1</Contact>
</NodePrices>
<NodePrices>
<NodeName>Place2</NodeName>
<Contact>Employee2</Contact>
</NodePrices>
<NodePrices>
<NodeName>Place3</NodeName>
<Contact>Employee3</Contact>
</NodePrices>
</DocBody>
Я нашел ранее заданный вопрос, который выглядит как ответ на мой вопрос, однако результаты не такие, как я ожидал. Когда я запускаю код и повторяю результаты, которых я ожидаю, я вижу Place2. Когда я сохраняю результаты в файл, Place2 отсутствует, все, что у меня есть, это DocHeader. Что я делаю неправильно?
Предыдущее сообщение: Как изменить XML-файл с помощью PHP
Вот мой PHP
$dom=new DOMDocument();
$dom->load("Nodes.xml");
$root=$dom->documentElement;
$nodesToDelete=array();
$markers=$root->getElementsByTagName('NodePrices');
// Loop trough childNodes
foreach ($markers as $marker) {
$NodeName=$marker->getElementsByTagName('NodeName')->item(0)->textContent;
if($NodeName=='Place2') {
continue;
}
$nodesToDelete[]=$marker;
}
// You delete the nodes
foreach ($nodesToDelete as $node) {
$node->parentNode->removeChild($node);
}
echo $dom->saveXML();
$dom->save('FilteredNodes.xml');
...
. - person Parfait   schedule 05.02.2018$dom->save(__DIR__ . '/FilteredNodes.xml');
убедиться, что файл сохраняется в том же каталоге, что и ваш скрипт. - person Phil   schedule 05.02.2018