• 締切済み

二つの XML 文書を結合する方法は?

DOM で XML 文書を結合する例を探していたら、下記のものが見つかりました。 http://www.atmarkit.co.jp/fxml/askxmlexpert/020merge/merge_sample.html これを参考に、PHP5 でテストするために、下記のスクリプトを作成しました。 <?php $r1 = new DomDocument; $r1->loadXML("<Items><Item>a</Item></Items>"); $r1rt = $r1->documentElement; $r2 = new DomDocument; $r2->loadXML("<Item>b</Item>"); $r2rt = $r2->documentElement; $r1rt->insertBefore($r2rt,null); $r1->encoding = "utf-8"; print $r1->saveXML(); ?> このスクリプトを実行すると、insertBefore のところで例外が発生しエラーになってしまいます。何が悪いのでしょうか? 最終的にやりたいのは XML 文書を結合するということなので、DOM にはこだわりません。何か良い方法があれば、お知恵をお貸し下さい。

みんなの回答

  • seijro
  • ベストアンサー率50% (3/6)
回答No.1

# ソースにコメントをつけて回答します。 $r1 = new DomDocument; $r1->loadXML("<Items><Item>a</Item></Items>"); $r1rt = $r1->documentElement; $r2 = new DomDocument; $r2->loadXML("<Item>b</Item>"); $r2rt = $r2->documentElement; # 違うXMLドキュメントからコピーする場合はちゃんと # importNodeを行いましょう。 $r2rt_copy = $r1->importNode($r2rt, true); # 最後に付け加えるならappendChildを用いたほうがいいと思います。 $r1rt->appendChild($r2rt_copy); $r1->encoding = "utf-8"; print $r1->saveXML(); # PHPの経験は少ないので記述ミスがあると思います。 # そこは直してください(*^^*)

関連するQ&A