Java DOM:getElementsByTagNameNS用于NO命名空间中的元素

时间:2013-08-24 21:25:03

标签: java xml dom xml-namespaces

我注意到,当使用名称空间感知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相当模糊,并没有明确提到空指针或零长度字符串可用于无命名空间元素。我能依靠这种行为吗?

1 个答案:

答案 0 :(得分:1)

DOM通常对“未命名的命名空间”使用null。这在某些方法中是明确的。但如果它不在规范中,你就不能依赖它。 (大多数编写DOM应用程序的人只会针对一个DOM实现测试它们,当他们发现它只适用于该实现时,他们可能会遇到令人讨厌的意外。)

不使用DOM的另一个原因 - 有更好的替代品可用!