2

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>

これを行う方法がわかりません。タイトルノードを削除して、大量のエラーコードを取得するだけです

4

1 に答える 1

2

これはおそらく xpath を使用するものですが、見つけることができます...

$pagetitle->item(0)->parentNode->removeChild($pagetitle->item(0));

と置き換えます...

$pagetitle->item(0)->parentNode->parentNode->removeChild($pagetitle->item(0)->parentNode);

XML ツリーの 1 つ上のレベルに移動する

于 2012-04-26T22:14:07.937 に答える