I need to create an XML xPath parser. All parsing has to happen on client side (using javascript). I created an javascript that does this, and everything looks OK until default namespaces come into play. I simply can’t query XML that has default namespace.
I created an example code on fiddle. In xmlString is XML string received from server. In xPathString is query done on received XML.
Here are some scenarios:
- http://jsfiddle.net/BF34q/1/ – no namespaces – everything works OK
- http://jsfiddle.net/BF34q/2/ – ns namespace added. element has ns: prefix. xPath uses this prefix – OK
- http://jsfiddle.net/BF34q/3/ – default namespace used – not sure how to configure xPathString.
Note that others will use this parser, so I would really like to avoid solutions like
var xPathString = "//*[local-name()='book']";
and enable them to parse it using simple xPath expressions. I wonder if it is possible to assign default namespace prefix in javascript?
Note: The example provided on fiddle will not work in IE.
I think there are three ways to do this:
//*[local-name()='book']syntax for accessing nodesThis can be achieved like this: