getElementsByTagNameNS

getElementsByTagNameNS

我注意到与命名空间感知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/

10-14 10:01