1

我注意到当与命名空间感知一起使用时DocumentBuilderFactory

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("sample.xml"));

在调用中使用 anull或零长度字符串将生成具有提供的localName的元素,这些元素根本不在 NO 命名空间中(不包括可能在命名空间中的具有该localName的元素):""getElementsByTagNameNS

NodeList foo1 = doc.getElementsByTagNameNS(null, "localname");
NodeList foo2 = doc.getElementsByTagNameNS(""  , "localname");

但是,Element::getElementsByTagNameNS的(不可链接的)Javadoc相当含糊,并且没有明确提到空指针或零长度字符串可用于非命名空间元素。我可以依靠这种行为吗?

4

1 回答 1

1

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

不使用 DOM 的另一个原因 - 有更好的选择!

于 2013-08-25T08:16:57.897 回答