Dealing with XML namespaces in JavaScript (DOM)

dom, javascript, xml-namespaces

Solution

Aside the usual methods such as `document.getElementsByTagName`, DOM offers their namespaced versions: `document.getElementsByTagNameNS`

Such methods take the namespace URL as their first argument.

document.getElementsByTagNameNS('http://...', 'abc');

By the way, using the regular methods, the elements might be available as…

document.getElementsByTagName('xmlns\\:abc');

This works for me in case of a HTML DOM even without "importing" any namespace.

Update:

The method OP was looking for is `document.lookupPrefix('http://...')`

Problem

I am building a tree (for SOAP) using DOM. I would like read the following info at a certain node: - Is an XML namespace already "imported" into the document (with `xmlns:blah="http://...`) - knowing the `http://...` part. - What moniker (in the above example `blah`) used. Is there any way other than the manual: to walk chain of ancestors and iterate on attribute nodes, find any starting with `xmlns:` checking the value and if match return the rest of the attribute name?

Original source