XML のパースとシリアライズ

この記事は翻訳が完了していません。 この記事の翻訳にご協力ください

場合によっては、XML のコンテンツを解析して DOM ツリーに変換する必要があります。逆に、既存の DOM ツリーを XML にシリアル化することもあります。この記事では、Web プラットフォームで提供されるオブジェクトを見て、XML のシリアライズと解析の一般的な作業を容易にします。

DOM ツリーをシリアライズし、XML を含む文字列に変換します。
XML を含む文字列を解析し、入力データに基づいて XMLDocument または Document を返すことによって DOM ツリーを構築します。
URL からコンテンツを読み込みます。XML コンテンツは、XML 自体から構築された DOM ツリーを持つ XML Document オブジェクトとして返されます。
XML 文書の特定の部分のアドレスを含む文字列を作成し、それらのアドレスに基づいて XML ノードを特定する技術。

XML 文書を作成する

次のいずれかの方法を使用して XML 文書を作成します(これは Document のインスタンスです)。

文字列を DOM ツリーにパースする

この例では DOMParser を使用して文字列の XML フラグメントを DOM ツリーに変換します。

var sMyString = '<a id="a"><b id="b">hey!</b></a>';
var oParser = new DOMParser();
var oDOM = oParser.parseFromString(sMyString, "application/xml");
// print the name of the root element or error message
console.log(oDOM.documentElement.nodeName == "parsererror" ? "error while parsing" : oDOM.documentElement.nodeName);

URL にできるリソースを DOM ツリーにパースする

XMLHttpRequest を使用する

URL アドレス指定可能な XML ファイルを読み込んで解析して DOM ツリーにするサンプルコードを次に示します。

var xhr = new XMLHttpRequest();
xhr.onload = function() {
xhr.onerror = function() {
  dump("Error while getting XML.");
xhr.open("GET", "example.xml");
xhr.responseType = "document";

The value returned in the xhr object's responseXML field is a Document constructed by parsing the XML.

If the document is HTML, the code shown above will return a Document. If the document is XML, the resulting object is actually a XMLDocument. The two types are essentially the same; the difference is largely historical, although differentiating has some practical benefits as well.

Note: There is in fact an HTMLDocument interface as well, but it is not necessarily an independent type. In some browsers it is, while in others it is simply an alias for the Document interface.

XML 文書のシリアライズ

Given a Document, you can serialize the document's DOM tree back into XML using the XMLSerializer.serializeToString() method.

Use the following approaches to serialize the contents of the XML document you created in the previous section.

DOM ツリーを文字列にシリアライズ

First, create a DOM tree as described in How to Create a DOM tree. Alternatively, use a DOM tree obtained from XMLHttpRequest.

To serialize the DOM tree doc into XML text, call XMLSerializer.serializeToString():

var oSerializer = new XMLSerializer();
var sXML = oSerializer.serializeToString(doc);

HTML 文書のシリアライズ

If the DOM you have is an HTML document, you can serialize using serializeToString(), but there is a simpler option: just use the Element.innerHTML property (if you want just the descendants of the specified node) or the Element.outerHTML property if you want the node and all its descendants.

var docHTML = document.documentElement.innerHTML;

As a result, docHTML is a DOMString containing the HTML of the contents of the document; that is, the <body> element's contents.

You can get HTML corresponding to the <body> and its descendants with this code:

var docHTML = document.documentElement.outerHTML;