java преобразовать строку в xml и разобрать узел

Здравствуйте, я возвращаю строку из веб-сервиса.

Мне нужно проанализировать эту строку и получить текст в сообщении об ошибке?

Моя строка выглядит так:

<response>
<returnCode>-2</returnCode>
<error>
<errorCode>100</errorCode>
<errorMessage>ERROR HERE!!!</errorMessage>
</error>
</response>

Лучше просто проанализировать строку или преобразовать в xml, а затем проанализировать?


person Doc Holiday    schedule 29.10.2013    source источник


Ответы (3)


Я бы использовал библиотеки XML-документов Java. Это немного беспорядок, но работает.

String xml = "<response>\n" +
             "<returnCode>-2</returnCode>\n" +
             "<error>\n" +
             "<errorCode>100</errorCode>\n" +
             "<errorMessage>ERROR HERE!!!</errorMessage>\n" +
             "</error>\n" +
             "</response>";
Document doc = DocumentBuilderFactory.newInstance()
                                     .newDocumentBuilder()
                                     .parse(new InputSource(new StringReader(xml)));

NodeList errNodes = doc.getElementsByTagName("error");
if (errNodes.getLength() > 0) {
    Element err = (Element)errNodes.item(0);
    System.out.println(err.getElementsByTagName("errorMessage")
                          .item(0)
                          .getTextContent());
} else { 
        // success
}
person azz    schedule 29.10.2013
comment
это сработало для меня!!... спасибо - person Doc Holiday; 29.10.2013
comment
Это работает и для меня. спасибо - person mavi; 15.12.2016

Я бы, вероятно, использовал синтаксический анализатор XML, чтобы преобразовать его в XML с помощью DOM, а затем получить текст. Преимущество этого заключается в том, что он надежный и справляется с любыми необычными ситуациями, такими как строка, подобная этой, где что-то было закомментировано:

<!-- commented out <errorMessage>ERROR HERE!!!</errorMessage> -->

Если вы попытаетесь разобрать его самостоятельно, вы можете столкнуться с такими вещами. Также у него есть то преимущество, что если требования расширятся, то очень легко изменить ваш код.

http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm

person Paul Richards    schedule 29.10.2013

Это XML-документ. Используйте синтаксический анализатор XML.

Вы можете разобрать его, используя строковые операции. Но вам придется побеспокоиться о декодировании сущностей, кодировках символов, разделах CDATA и т. д. Парсер XML сделает все это за вас.

Ознакомьтесь с JDOM, чтобы узнать о более простом подходе к анализу XML, чем использование необработанных реализаций DOM/SAX.

person Brian Agnew    schedule 29.10.2013