手段をループまたはノードツリー上を移動を横断します。
ノードツリーのトラバース
多くの場合、あなたは、たとえば、ループにXML文書をしたい:あなたは、各要素の値を抽出したいとき。
これは呼ばれる"Traversing the node tree"
次の例では、<書籍>のすべての子ノードをループし、それらの名前と値を表示します。
例
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";
parser = new DOMParser();
xmlDoc
= parser.parseFromString(text,"text/xml");
// documentElement always
represents the root node
x = xmlDoc.documentElement.childNodes;
for (i =
0; i < x.length ;i++) {
txt += x[i].nodeName + ": " +
x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>
出力:
title: Everyday Italian
author: Giada De Laurentiis
year: 2005
»それを自分で試してみてください 例を説明しました:
- XMLDOCにXML文字列をロードします
- ルート要素の子ノードを取得します。
- 各子ノード、出力ノード名と、テキストノードのノード値の
DOM解析におけるブラウザの違い
すべての近代的なブラウザでは、W3C DOMの仕様をサポートしています。
しかし、ブラウザの間にいくつかの違いがあります。 1つの重要な違いは、次のとおりです。
- 彼らはホワイトスペースや改行を処理する方法
DOM - ホワイトスペースと改行
XMLは、多くの場合、ノード間で、新しい行、または空白文字が含まれています。 これは多くの場合、文書はメモ帳などの単純なエディタで編集された場合です。
次の例(edited by Notepad) CR / LF含まれている(new line)各行と各子ノードの前に2つの空間の間を:
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
他のブラウザではない間のInternet Explorer 9およびそれ以前のバージョンでは、テキストノードとして空の白のスペース、または新しい行を扱うことはありません。
次の例では、出力の子供の数は、ルート要素ノードます(of books.xml )持っています。 IE9以前の意志出力4子ノード、IE10以降のバージョン、および他のブラウザを出力9子ノードながら:
例
function myFunction(xml) {
var xmlDoc = xml.responseXML;
x =
xmlDoc.documentElement.childNodes;
document.getElementById("demo").innerHTML =
"Number
of child nodes: " + x.length;
}
»それを自分で試してみてください PCDATA - 解析された文字データ
XMLパーサーは、通常、XML文書内のすべてのテキストを解析します。
XML要素が解析されると、XMLタグ間のテキストは、解析されます。
<message>This text is also parsed</message>
パーサーは、XML要素は、この例、のように他の要素、この含めることができないため<name>要素は、2つの他の要素が含まれています(first and last) :
<name><first>Bill</first><last>Gates</last></name>
パーサはこのようなサブ要素に分割します:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
解析された文字データ(PCDATA) XMLパーサーによって解析されるテキストデータについて使用される用語です。
CDATA - (Unparsed)文字データ
用語CDATAは、XMLパーサーによって解析されるべきではないテキストデータについて使用されています。
以下のような文字"<"と"&" XML要素で違法です。
"<"パーサーは新しい要素の始まりとしてそれを解釈するため、エラーが生成されます。
"&"パーサは文字エンティティの開始として、それを解釈するため、エラーが生成されます。
いくつかのテキストは、JavaScriptのコードのように、多くの含まれ"<"や"&"の文字が。 エラースクリプトコードを避けるために、CDATAとして定義することができます。
CDATAセクション内部のすべてがパーサーによって無視されます。
CDATAセクションで始まる" <![CDATA[ " and ends with " ]]> "
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0)
{
return 1;
} else
{
return 0;
}
}
]]>
</script>
上記の例では、CDATAセクション内部のすべてがパーサーによって無視されます。
Notes on CDATA sections:
CDATAセクションは、文字列を含めることはできません"]]>" ネストされたCDATAセクションは許可されません。
"]]>"スペースや改行を含めることはできませんCDATAセクションの終わりを示しています。