• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XMLの子要素追加の順番について)

XMLの子要素追加の順番について

このQ&Aのポイント
  • XMLに子要素を追加する場合、追加する順番によって表示される順序が変わることがあります。
  • PHPの場合、追加する子要素を先頭に表示させる方法はありますか?
  • お知恵をお借りしたく、ご教示いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

insertBefore()の第2引数にko要素を指定すれば、 ko の手前に追加のはずだけど, 第2引数省略するとappendChild と同じ動作。 <?php // $parent は DOMElement とする $ko = $parent->appandchild( $dom->createElement('child') ); $presib = $parent->insertbefore( $dom->createElement('child','insert into previous'), $ko); $nextsib = $parent->insertbefore( $dom->createElement('child','add last') );

free_pro
質問者

お礼

既存の子ノードの指定がわかりませんでしたので実装できませんでしたが 別の方法で解決いたしました。 ソースまでありがとうございました!

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

環境が無いので実際に試してはいないのですが、DOMNode::insertBefore()は使えませんか? 2番目の引数を省略すると子要素として追加するようですが……すでに子要素がある場合にどうなるか参考URLには書いてありませんね。

参考URL:
http://www.php.net/manual/ja/domnode.insertbefore.php
free_pro
質問者

補足

insertBeforeに関しまして試しましたが 望んだ結果にならず悪戦苦闘中です・・・ 確かに前の方に追記はされるのですが なぜか親ノードの前につくられてしまいます。 下記は現在のXML <?xml version="1.0" encoding="UTF-8"?> <oya> <ko> <koko1>1</koko1> <koko2>1</koko2> </ko> </oya> koの前に作る予定が なぜかoyaの前に作られたりしてしまいます。 確かに最初の方に作られていたので大丈夫なような気もしますが koの前という指定方法が分かりません。 再度申し訳ございませんがアドバイスよろしくお願いいたします。

関連するQ&A