Получить значения свойств узла - PullRequest
0 голосов
/ 25 октября 2019

У меня возникают некоторые проблемы с получением прав и их значений Node от Document, я выполняю WebService, который возвращает XML, этот WS может вернуть две версии XML:

XML с «ОК» код:

<?xml version="1.0" ?>
<data>
<ENTRY1 CODE="00" MESSAGE="MESSAGE"/>
</data>

XML с «ОШИБКА» код:

<?xml version="1.0" ?>
<Root>
<Error DescErr="Error Description"/>
</Root>

Тогда я могу обнаружить <Error/> Node в этом случае, но когда я пытаюсь получить Node <data> и их потомка <ENTRY1/>и свойства CODE и MESSAGE, которые я получаю, и исключение, когда я пытаюсь проанализировать Node в Element:

java.lang.ClassCastException: com.sun.org. apache.xerces.internal.dom.DeferredTextImpl не может быть преобразован в org.w3c.dom.Element

Это мой код:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
Document xmlDom = docBuilder.parse(new InputSource(new StringReader(response.toString())));
if (xmlDom.hasChildNodes()) {
    NodeList listNodos = xmlDom.getElementsByTagName("Error");
    if (listNodos.getLength() > 0) {
            System.out.println("errors");
    } else {
       listNodos = xmlDom.getElementsByTagName("data");
       if (listNodos.getLength() > 0) {
          for (int x = 0; x < listNodos.getLength(); x++) {
              Node aux = listNodos.item(x);
              if (aux.hasChildNodes()) {
                 Node aux2 = aux.getFirstChild();
                 System.out.println(aux2.getNodeName());
                 Element element = (Element) aux2;//EXCEPTION THROWS HERE
              }
           }
        }
    }
}

Может дать мне любое предположение, что чтоЯ делаю не так?

...