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

标签 javascript html xml dom xml-namespaces

我使用 XMLHttpRequest 加载了 XMLDocument。

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

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

但是如何从 XMLDocument 获取默认 namespace ?

是否有像DOMString Node.getDefaultNamespace()这样的想法?

最佳答案

使用lookupNamespaceURI(null):

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) + '|');
});

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

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('') + '|');
});

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

关于javascript - JS 中从 XMLDocument 获取默认命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39315623/

相关文章:

javascript - 如何只使用第二个或第三个回调

javascript - 如何通过 Node.js 中的流传输等待的异步值?

javascript - oninput 事件触发一次。也可能存在范围问题

c# - 在 C# 中用 ""替换新行

javascript - NodeJS 中调用 JSON 的奇怪字段

javascript - 浏览器开发者工具 : Disable Warnings in 3rd Party Scripts

html - DIV 表 colspan : how?

html - 防止换行 span 或 div

c# - XML 列输出

c++ - 从 MySQL 中检索 xml