DOM(PHP)でXMLを作る


たとえば、こんなXMLをDOMで作りたいとしたとき、
思いのほか大変だったりします。
オブジェクト指向の弊害かもしれないですが・・)

・作りたいXML

PHPでDOMをつかうと・・

ただ、よくよく見るとそれほど難しいわけではなく(≠面倒ではない)
DOMDocument->createElement()でノードを追加し
そのノードに対してDOMNode->appendChild()をすれば
子ノードができていくわけですし、
DOMDocument->createTextNode()でテキストノードを追加すれば
タグの値になるわけです。
とはいえオブジェクトだらけで訳わからん〜状態になるのは確か・・
オブジェクト作ってノード追加してを頭の中に浮かべながら
or 紙に書いてみながらやるともう少し理解が早いかもしれないです。

とはいえ、ほんの数行のXMLを作るだけでここまで
やらないといけないことがあると思うと「うんざりでめんどい」なので
初期データ生成くらいはXML直接打ってのテキスト操作で
ちょいちょいとしちゃってもいいんじゃないかと思います。
(そっちのほうがコードもわかりやすいだろうし)

次は既存XMLにノードの追加や値の変更をやります。




ちなみにXMLではすべてノードで形成されています。

というXMLなら 123は「値」だろうと思うわけですが
実はitem も data も 123 もすべて「ノード」の扱いで
個々に別々なノード名が付いています(要素ノードやテキストノードなどなど・・)。
(例外は属性くらいかな? (<item id="123"></item> だとIDの部分))

あと、DOMって「Document Object Model」の略で
オブジェクト指向でどんなドキュメントやデータも扱おうって言うのが趣旨なので
XMLを扱うためだけの物ではありません。
ただ、オブジェクト指向データ形式といったらXML以外存在しない(しにくい)ので
XML用のデータ整形の仕組みと思ってもそうそう間違いでもないです。
(ちなみにHTMLの生成もDOMを使って扱うことができます。
 なのできれいなHTMLはDOMでパースができます)