4

我有下一个简单的代码部分:

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”为空。有什么问题?

4

2 回答 2

6

您在document 元素要求元素,但 TT_NET_Resultdocument 元素。如果你只是打电话

NodeList nl = doc.getElementsByTagName("TT_NET_Result");

那么我怀疑你会得到你想要的结果。

于 2011-09-14T09:37:01.853 回答
2

这是对这个老问题的另一个回答。我今天在我的代码中遇到了类似的问题,实际上我一直在读/写 XML。出于某种原因,我忽略了一个主要事实。如果你想使用

NodeList elements = doc.getElementsByTagNameNS(namespace,elementName);

您需要使用可识别名称空间的工厂来解析文档。

private static DocumentBuilderFactory getFactory() {
    if (factory == null){
        factory = DocumentBuilderFactory
                .newInstance();
        factory.setNamespaceAware(true);
    }
    return factory;
}
于 2017-11-03T14:49:59.470 回答