XML DOM - 属性とメソッド

属性とメソッドがXML DOMにプログラミングインターフェースを定義します。

以下の例ではXMLファイルを使用します books.xml

関数 loadXMLDoc()、外部JavaScriptに配置されています。XMLファイルをロードするために使用されます。

関数 loadXMLString()、外部JavaScriptに配置されています。XML文字列をロードするために使用されます。

XMLファイルをロードし解析する
XML文字列をロードし解析する

プログラミングインターフェース

DOMはXMLを一連のノードインターフェースとしてシミュレートします。JavaScriptや他のプログラミング言語でノードにアクセスできます。このチュートリアルではJavaScriptを使用します。

DOMのプログラミングインターフェースは、標準の属性とメソッドを通じて定義されています。

属性「何であるか」の形でよく使用されます(例えば、ノード名は "book")。

メソッドよく「何に対して何をするか」という方法で使用されます(例えば「book」ノードを削除する)。

XML DOM 属性

典型的な DOM 属性の一部:

  • x.nodeName - x の名称
  • x.nodeValue - x の値
  • x.parentNode - x の親节点
  • x.childNodes - x の子节点
  • x.attributes - x の属性节点

注釈:上記のリストでは、x はノードオブジェクトです。

XML DOM メソッド

  • x.getElementsByTagName(name) - 指定されたタグ名を持つすべての要素を取得
  • x.appendChild(node) - x に子节点を挿入
  • x.removeChild(node) - x から子节点を削除

注釈:上記のリストでは、x はノードオブジェクトです。

books.xml 内の <title> 要素からテキストを取得する JavaScript コード:

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

このステートメントが実行された後、txt に保存される値は「Harry Potter」です。

説明:

  • xmlDoc - 解析器によって作成された XML DOM
  • getElementsByTagName("title")[0] - 最初の <title> 要素
  • childNodes[0] - <title> 要素の最初の子节点(テキストノード)
  • nodeValue - ノードの値(テキスト自身)

上記の例では、getElementsByTagName はメソッドであり、childNodes と nodeValue は属性です。

XML ファイルの解析 - クロスブラウザの例

以下のコードスニペットは loadXMLDoc 関数を使用して books.xml XML 解析器に読み込み、最初の book のデータを表示します:

xmlDoc=loadXMLDoc("books.xml");
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

出力:

ハリ・ポッター
J K. Rowling
2005

TIY

上記の例では、每个テキストノードに childNodes[0] を使用しており、各要素がテキストノードを持っている場合でもです。これは getElementsByTagName メソッドが常に配列を返すためです。

XML 文字列の解析 - クロスブラウザの例

以下のコードは XML 文字列を読み込み解析します:

以下のコードスニペットは loadXMLString 関数を使用して books.xml XML 解析器をロードし、最初の book のデータを表示します:

text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
xmlDoc=loadXMLString(text);
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

出力:

ハリ・ポッター
J K. Rowling
2005

TIY