getElementsByTagName не работает - PullRequest
       27

getElementsByTagName не работает

4 голосов
/ 14 сентября 2011

У меня есть следующая простая часть кода:

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" пуста.Что может быть не так?

Ответы [ 2 ]

6 голосов
/ 14 сентября 2011

Вы запрашиваете элементы в элементе документа, но TT_NET_Result является элементом документа.Если вы просто позвоните

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

, то я подозреваю, что вы получите желаемый результат.

1 голос
/ 03 ноября 2017

Вот еще один ответ на этот старый вопрос. Я столкнулся с похожей проблемой в своем коде сегодня, и я фактически все время читаю / пишу XML. По какой-то причине я упустил из виду один важный факт. Если вы хотите использовать

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

Вам необходимо проанализировать ваш документ на фабрике, учитывающей пространство имен.

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