XMLDOMノード
XML DOMによると、XMLドキュメント内のすべてがノードです。
- ドキュメント全体がドキュメントノードです
- すべてのXML要素は要素ノードです
- XML要素のテキストはテキストノードです
- すべての属性は属性ノードです
- コメントはコメントノードです
DOMの例
次のXMLファイル(books.xml)を見てください。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
上記のXMLのルートノードの名前は<bookstore>です。
ドキュメント内の他のすべてのノードは、<bookstore>内に含まれています。
ルートノード<bookstore>は4つの<book>ノードを保持します。
最初の<book>ノードは、子ノード<title>、<author>、<year>、および<price>を保持します。
子ノードには、「毎日がイタリアン」、「Giada De Laurentiis」、「2005」、「30.00」の各テキストノードが含まれています。
テキストは常にテキストノードに保存されます
DOM処理でよくあるエラーは、要素ノードにテキストが含まれていることを期待することです。
ただし、要素ノードのテキストはテキストノードに保存されます。
この例:<year> 2005 </ year>の場合、要素ノード<year>は、値が「2005」のテキストノードを保持します。
「2005」は<year>要素の値ではありません!
XMLDOMノードツリー
XML DOMは、XMLドキュメントをツリー構造として表示します。ツリー構造はノードツリーと呼ばれます。
ツリーからすべてのノードにアクセスできます。それらの内容を変更または削除したり、新しい要素を作成したりできます。
ノードツリーには、ノードのセットとそれらの間の接続が表示されます。ツリーはルートノードから始まり、ツリーの最下位レベルにあるテキストノードに分岐します。
上の画像は、XMLファイルbooks.xmlを表しています。
ノードの親、子、および兄弟
ノードツリー内のノードは、相互に階層関係にあります。
親、子、および兄弟という用語は、関係を説明するために使用されます。親ノードには子があります。同じレベルの子供は兄弟(兄弟または姉妹)と呼ばれます。
- ノードツリーでは、最上位ノードはルートと呼ばれます
- ルートを除くすべてのノードには、親ノードが1つだけあります。
- ノードには任意の数の子を含めることができます
- 葉は子のないノードです
- 兄弟は同じ親を持つノードです
次の画像は、ノードツリーの一部とノード間の関係を示しています。
XMLデータはツリー形式で構造化されているため、ツリーの正確な構造や、そこに含まれるデータのタイプを知らなくても、トラバースできます。
このチュートリアルの後の章で、ノードツリーのトラバースについて詳しく学習します。
最初の子-最後の子
次のXMLフラグメントを見てください。
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
上記のXMLでは、<title>要素は<book>要素の最初の子であり、<price>要素は<book>要素の最後の子です。
さらに、<book>要素は、<title>、<author>、<year>、および<price>要素の親ノードです。