我注意到与命名空间感知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相当模糊,并且没有明确提及空指针或零长度字符串可用于无命名空间元素。我可以依靠这种行为吗?
最佳答案
DOM通常对“未命名名称空间”使用null。这在某些方法中是明确的。但是,如果不在规范中,则不能依靠它。 (大多数编写DOM应用程序的人只能对一种DOM实现进行测试,当发现它们仅适用于该实现时,他们可能会感到讨厌)。
不使用DOM的另一个原因-还有更好的选择!
关于java - Java DOM:NO namespace 中元素的getElementsByTagNameNS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18423266/