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