从JS中的XMLDocument获取默认命名空间

时间:2016-09-04 09:48:31

标签: javascript html xml dom xml-namespaces

我使用XMLHttpRequest加载了XMLDocument。

<root xmlns="http://somesite.org/ns">
</root>

http://somesite.org/ns是默认命名空间。我可以使用函数Node.isDefaultNamespace来检查某些命名空间是否为默认值(true / false)并且它运行良好。

但是如何从XMLDocument获取默认命名空间?

是否有类似DOMString Node.getDefaultNamespace()的想法?

1 个答案:

答案 0 :(得分:1)

使用lookupNamespaceURI(null)

&#13;
&#13;
var parser = new DOMParser();
[
  '<root xmlns="http://example.com/ns1"/>',
  '<root/>',
  '<ns:root xmlns:ns="example.com/ns2"/>'
].forEach(function(item) {
  var doc = parser.parseFromString(item, "application/xml");
  console.log('result of doc.lookupNamespaceURI(null): |' + doc.lookupNamespaceURI(null) + '|');
});
&#13;
&#13;
&#13;

根据https://www.w3.org/TR/dom/#dom-node-lookupnamespaceuri,它也可以使用lookupNamespaceURI('')

&#13;
&#13;
var parser = new DOMParser();
['<root xmlns="http://example.com/ns1"/>',
 '<root/>',
 '<ns:root xmlns:ns="example.com/ns2"/>'].forEach(function(item) {
  var doc = parser.parseFromString(item, "application/xml");
  console.log('result of doc.lookupNamespaceURI(\'\'): |' + doc.lookupNamespaceURI('') + '|');
});
&#13;
&#13;
&#13;

请记住,XML允许您覆盖任何元素上的默认命名空间,因此doc.lookupNamespaceURI('')的结果会检查documentElement,并且可能有子级或后代使用不同的默认命名空间。< / p>