【问题标题】:getElementsByTagName doesn't workgetElementsByTagName 不起作用
【发布时间】:2011-11-16 20:52:26
【问题描述】:

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

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");

问题是我没有得到任何结果 - 节点列表变量“nl”为空。 有什么问题?

【问题讨论】:

    标签: java xml document getelementsbytagname


    【解决方案1】:

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

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

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

    private static DocumentBuilderFactory getFactory() {
        if (factory == null){
            factory = DocumentBuilderFactory
                    .newInstance();
            factory.setNamespaceAware(true);
        }
        return factory;
    }
    

    【讨论】:

      【解决方案2】:

      您要的是 文档元素下的元素,但 TT_NET_Result 文档元素。如果你只是打电话

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

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

      【讨论】:

      • 谢谢。我完全忽略了文档元素。
      • 这对我有帮助。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多