- ベストアンサー
XMLの子要素追加の順番について
- XMLに子要素を追加する場合、追加する順番によって表示される順序が変わることがあります。
- PHPの場合、追加する子要素を先頭に表示させる方法はありますか?
- お知恵をお借りしたく、ご教示いただければ幸いです。
- みんなの回答 (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') );
その他の回答 (1)
- hitomura
- ベストアンサー率48% (325/664)
環境が無いので実際に試してはいないのですが、DOMNode::insertBefore()は使えませんか? 2番目の引数を省略すると子要素として追加するようですが……すでに子要素がある場合にどうなるか参考URLには書いてありませんね。
補足
insertBeforeに関しまして試しましたが 望んだ結果にならず悪戦苦闘中です・・・ 確かに前の方に追記はされるのですが なぜか親ノードの前につくられてしまいます。 下記は現在のXML <?xml version="1.0" encoding="UTF-8"?> <oya> <ko> <koko1>1</koko1> <koko2>1</koko2> </ko> </oya> koの前に作る予定が なぜかoyaの前に作られたりしてしまいます。 確かに最初の方に作られていたので大丈夫なような気もしますが koの前という指定方法が分かりません。 再度申し訳ございませんがアドバイスよろしくお願いいたします。
お礼
既存の子ノードの指定がわかりませんでしたので実装できませんでしたが 別の方法で解決いたしました。 ソースまでありがとうございました!