• 締切済み

removeChildを使っても変化なし PHP5.0

idが条件に合ったら子ノードを削除する。という簡単なことをしたいのですが、サンプルソースをコピーして簡単なソースを作りましたが、何を変えてもエラーメッセージも出なければ、XMLファイルに変化もありません。 どなたか詳しい方削除ができない理由を教えてください。 books.xml <?xml version="1.0" ?> <data> <p><name id="1">aaaa</name><ad>1111</ad></p> <p><name id="2">bbbb</name><ad>2222</ad></p> <p><name id="3">cccc</name><ad>3333</ad></p> <p><name id="4">dddd</name><ad>4444</ad></p> <p><name id="5">eeee</name><ad>5555</ad></p> <p><name id="6">ffff</name><ad>6666</ad></p> </data> xmltest.php <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("books.xml"); $id='3'; //DOMXPath オブジェクトの作成 $xpath = new DOMXPath($doc); //ローケーションパスの作成 $query = "/data/p[name[@id='$id']]"; //XPath を評価する 戻り値は、DOMNodeList $nodeList = $xpath->query($query); $pNode = $nodeList->item(0); //print $pNode -> textContent; //"data"要素ノードの取得 $dataElement= $doc->getElementsByTagName("data")->item(0); //print $dataElement -> textContent; //データを削除する $dataElement->removeChild($pNode); ?> これでidが3の行を消したいです

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$dataElement = $doc->documentElement; $dataElement->removeChild($pNode);

gnaccola
質問者

お礼

回答ありがとうございます。 原因はそれかどうか判断できるレベルではないのですが、$doc -> save("books.xml"); を付け足したことで問題を解決できました。

すると、全ての回答が全文表示されます。

専門家に質問してみよう