Удаление узла из XML-файла - PullRequest
       1

Удаление узла из XML-файла

0 голосов
/ 14 октября 2010

У меня есть 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);

Но он не работает.

1 Ответ

1 голос
/ 14 октября 2010

Уверен, что это дубликат, но мне лень его искать.Вот, пожалуйста:

$xml = <<< XML
<?xml version="1.0"?>
<category>
  <name>SWEATERS</name>
  <name>WATCHES</name>
  <name>PANTS</name>
  <name>test</name>
  <name>1</name>
</category>
XML;

$dom = new DOMDocument;
$dom->loadXML($xml);
$xPath = new DOMXPath($dom);
foreach($xPath->query('//name[text() = "test"]') as $node) {
    $node->parentNode->removeChild($node);
}
echo $dom->saveXML();

Вывод:

<?xml version="1.0"?>
<category>
  <name>SWEATERS</name>
  <name>WATCHES</name>
  <name>PANTS</name>

  <name>1</name>
</category>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...