您好我从Web服务中获取了一个字符串。
我需要解析此字符串并在错误消息中获取文本吗?
我的字符串如下所示:
<response>
<returnCode>-2</returnCode>
<error>
<errorCode>100</errorCode>
<errorMessage>ERROR HERE!!!</errorMessage>
</error>
</response>
解析字符串或转换为xml然后解析是否更好?
答案 0 :(得分:13)
我使用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
}
答案 1 :(得分:2)
我可能会使用XML解析器使用DOM将其转换为XML,然后获取文本。这样做的好处是可以强大并应对任何异常情况,例如像这样的行,其中有一些东西被注释掉了:
<!-- commented out <errorMessage>ERROR HERE!!!</errorMessage> -->
如果您尝试自己解析它,那么您可能会犯这样的事情。此外,它的优点是,如果需求扩展,那么很容易更改代码。
http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm
答案 2 :(得分:1)
这是一个XML文档。使用XML解析器。
你可以使用字符串操作来分开它。但你必须担心实体解码,字符编码,CDATA部分等。一个XML解析器将为你做所有这些。
查看JDOM以获得比使用原始DOM / SAX实现更简单的XML解析方法。