[英]Java w3c dom getElementsByTagName does not return any node
我有这段代码,只有 list3 的长度不为零。 是否可以通过本地标签名称获取节点列表,而无需命名空间前缀,如 list4?
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(entry.toFile());
NodeList list = doc.getElementsByTagNameNS("http://wtest2", "entry");
NodeList list2 = doc.getElementsByTagNameNS("x1", "entry");
NodeList list3 = doc.getElementsByTagName("x1:entry");
NodeList list4 = doc.getElementsByTagName("entry");
下面是我正在处理的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<x1:myroot
xmlns:bob="urn:test"
xmlns:x1="http://wtest2"
version="1.0">
<bob:header/>
<x1:entry>
<x1:data>
<x1:person>
<bob:name>test</bob:name>
</x1:person>
</x1:data>
</x1:entry>
<x1:entry>
<x1:data>
<x1:person>
<bob:name>test2</bob:name>
</x1:person>
</x1:data>
</x1:entry>
</x1:myroot>
由于您创建的工厂/构建器不支持名称空间,因此标签名称实际上是“x1:entry”,没有任何名称空间。
你需要打电话
dbf.setNamespaceAware(true);
然后
NodeList list = doc.getElementsByTagNameNS("http://wtest2", "entry");
应该管用。 您还可以使用“*”作为 namespaceURI 参数的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.