2009年9月27日日曜日

JavaScript で XML を読み込む

DOMParser で XML を DOM ツリーに変換する

Firefox で XMLを解析し、DOM ツリーを生成するには、DOMParser を使う。

Parsing and serializing XML – MDC によると、

Mozilla は現時点では W3C の Document Object Model Load and Save に対応していない ( bug 155749) ので、DOM ツリーをシリアライズおよびデシリアライズするには次の Mozilla 専用のインターフェイスを使うのが最も簡単です。…

  • DOMParser - XML を文字列から DOM ツリーにパースする

例えば、「名前」と「年齢」を含む XML から、名前のみを抽出する。

var theString = '<persons>' +
	'<person><name>太郎</name><age>20</age></person>' +
	'<person><name>次郎</name><age>25</age></person>' +
	'<person><name>花子</name><age>30</age></person>' +
	'</persons>';
var parser = new DOMParser();
var dom = parser.parseFromString(theString, "text/xml");
var persons = dom.getElementsByTagName("person");
for (var i=0; i<persons.length; i++){
	console.log(persons[i].getElementsByTagName("name")[0].textContent);
}

Firebug のコンソールで実行した結果は、

太郎
次郎
花子

XML に対して、HTML で要素を取得するときに使う getElementsByTagName メソッドを利用している。これは、getElementsByTagName メソッドが定義されている Document インターフェイスは、HTML と XML を表現したものであるため。