それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

JavaScriptでXMLにアクセスする。

XMLで書かれた要素にアクセスするには

たとえばSVG、たとえばXMLがTexAreaにあったとして、それを読み込みたいなと。

parser=new DOMParser();
xml_str = $("#text_area"). html();//またはXHRの結果。
dom=parser.parseFromString(xml_str,"application/xml");

これを使って。SVGタグを取り出せばいいのな

dom.getElementsByTagName("path")

次にこれを使ってXPATH

dom.xpath("//path",dom) #これはできない
dom.evaluate("//path",dom) # よくあるやつ

ただし名前空間の解決が必要な場合

// まずは名前空間の宣言を行う要素を生成 (要素名などは適当でよい)
var nsr_elem = document.createElementNS(null, "ns-resolver");
// 次に, その要素に名前空間の宣言のための属性を付与
// (今は prefix "h" を namespace URI "http://www.w3.org/1999/xhtml" に結びつける)
// (必要に応じて複数の名前空間の宣言をしてよい)
nsr_elem.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:h", "http://www.w3.org/1999/xhtml");
// XPathNSResolver の生成
var nsr = document.createNSResolver( nsr_elem );

ajaxはresponseXMLでトレばいいよ。

あそっか。 The responseXML of an XMLHttpRequest object.

responseXMLで取れるのか。

いやそのままXMLでいけるだろ。

参考資料

https://developer.mozilla.org/ja/Introduction_to_using_XPath_in_JavaScript

十章第二回 DOMでのXPathの利用 — JavaScript初級者から中級者になろう — uhyohyo.net

https://developer.mozilla.org/en/DOM/document.evaluate

http://www.softel.co.jp/blogs/tech/archives/2067

http://d.hatena.ne.jp/vividcode/20100103/1262523725

広告を非表示にする