将字符串转换为XML并解析节点的Java方法

11

您好,我正在从Web服务获取一个字符串。

我需要解析这个字符串并获取错误消息中的文本?

我的字符串看起来像这样:

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

直接解析字符串好还是先转换为XML再解析好呢?

3个回答

16

我会使用Java的XML文档库。它有点混乱,但是有效。

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
}

这对我有用!!谢谢 - Doc Holiday
我也试过了,它也对我可行。谢谢 - mavi

2

我可能会使用XML解析器通过DOM将其转换为XML,然后获取文本。这样做的优点是稳健性好,能够处理任何不寻常的情况,例如这样的一行,其中某些内容被注释掉:

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

如果您自己尝试解析它,可能会遇到像这样的问题。此外,它的优点是如果需求扩展,那么更改代码非常容易。 http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm

1

这是一个XML文档。使用XML解析器。

你可以使用字符串操作来分离它,但是你需要担心实体解码、字符编码、CDATA部分等问题。一个XML解析器将为您完成所有这些工作。

查看JDOM,它提供了比使用原始DOM/SAX实现更简单的XML解析方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接