我有下一个简单的代码部分:
String test = "<?xml version="1.0" encoding="UTF-8"?><TT_NET_Result><GUID>9145b1d3-4aa3-4797-b65f-9f5e00be1a30</GUID></TT_NET_Result>"
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document doc = dbf.newDocumentBuilder().parse(new InputSource(new StringReader(test)));
NodeList nl = doc.getDocumentElement().getElementsByTagName("TT_NET_Result");
问题是我没有得到任何结果 - nodelist变量“nl”为空。 可能有什么不对?
答案 0 :(得分:6)
您要求文档元素下的元素,但TT_NET_Result 是文档元素。如果你只是打电话
NodeList nl = doc.getElementsByTagName("TT_NET_Result");
然后我怀疑你会得到你想要的结果。
答案 1 :(得分:1)
这是对这个老问题的另一个回应。我今天在我的代码中遇到了类似的问题,实际上我一直在读/写XML。出于某种原因,我忽略了一个重要的事实。如果你想使用
NodeList elements = doc.getElementsByTagNameNS(namespace,elementName);
您需要使用名称空间感知的工厂解析文档。
private static DocumentBuilderFactory getFactory() {
if (factory == null){
factory = DocumentBuilderFactory
.newInstance();
factory.setNamespaceAware(true);
}
return factory;
}