我注意到,当使用名称空间感知DocumentBuilderFactory
:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("sample.xml"));
在调用null
时使用""
或零长度字符串getElementsByTagNameNS
将生成带有 localName 的元素,这些元素位于NO完全没有命名空间(不包括那些可能在命名空间中的 localName 的元素):
NodeList foo1 = doc.getElementsByTagNameNS(null, "localname");
NodeList foo2 = doc.getElementsByTagNameNS("" , "localname");
然而, Element :: getElementsByTagNameNS 的(不可链接的)Javadoc相当模糊,并没有明确提到空指针或零长度字符串可用于无命名空间元素。我能依靠这种行为吗?
答案 0 :(得分:1)
DOM通常对“未命名的命名空间”使用null。这在某些方法中是明确的。但如果它不在规范中,你就不能依赖它。 (大多数编写DOM应用程序的人只会针对一个DOM实现测试它们,当他们发现它只适用于该实现时,他们可能会遇到令人讨厌的意外。)
不使用DOM的另一个原因 - 有更好的替代品可用!