- ベストアンサー
PHPでXMLの編集・削除の方法
- PHPでXMLの編集・削除を行う方法を解説します。
- XPathを使用して要素を指定し、削除や編集を行います。
- 具体的なコード例や注意点も紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下でどうでしょうか。 // recordノードを取得 $xpath_record = $xpath->query("//record[@number=$session_number]")->item(0); // recordノードを削除 $xpath_record->parentNode->removeChild($xpath_record);
その他の回答 (1)
- fdsjaklfjas
- ベストアンサー率81% (96/118)
$xpath->query() が返すのは、DOMNodeListです。 http://jp.php.net/manual/ja/function.dom-domxpath-query.php ですので、 $xpath_title = $xpath->query(...); ではなくて、 $xpath_title = $xpath->query(...)->item(0); としなければだめです。 【削除について】 $rec = $xpath_title->parentNode; // titleの親ノードをrecに代入 $rec->removeChild($xpath_title); // recの子ノード(title)を削除 のようにします。 二行をまとめると、以下になります。 $xpath_title->parentNode->removeChild($xpath_title); 【編集について】 $xpath_title->title という書き方は、SimpleXMLなどの記法です。 削除の時と同じ方法で、XPathでtitleノードを取得して、 $xpath_title->nodeValue = "hogehoge"; としてやればよいと思います。
補足
回答ありがとうございました! 無事、編集・削除も出来るようになりました! 本当に感謝の気持ちでいっぱいです。 ただ、大変恐縮ではあるのですが 削除のPHPをタイトルのみではなく <record>要素を丸々削除したいと考えています。 自分でも、Xpathを書き換えたり等試みてはみたのですが なかなか消す事ができません。 よろしければ、丸々削除する方法も 教えて頂ければ嬉しいです。 大変申し訳ありませんが、よろしくお願いします。
お礼
回答ありがとうございました!! レコード全てを削除することができました!! 本当に、感謝の気持ちでいっぱいです。 ありがとうございました!!