java将字符串转换为xml并解析节点[重复]

Posted

技术标签:

【中文标题】java将字符串转换为xml并解析节点[重复]【英文标题】:java convert string to xml and parse node [duplicate] 【发布时间】:2013-11-08 18:35:48 【问题描述】:

您好,我正在从 web 服务返回一个字符串。

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

我的字符串如下所示:

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

是直接解析字符串还是转成xml再解析更好?

【问题讨论】:

【参考方案1】:

我会使用 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

【讨论】:

这对我有用!!...谢谢 它也适用于我。谢谢【参考方案2】:

我可能会使用 XML 解析器通过 DOM 将其转换为 XML,然后获取文本。这具有健壮性和应对任何异常情况的优势,例如这样的行,其中某些内容已被注释掉:

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

如果您尝试自己解析它,那么您可能会遇到这样的事情。它还有一个好处是,如果需求扩展,那么更改代码真的很容易。

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

【讨论】:

【参考方案3】:

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

可以使用字符串操作将其分开。但是您必须担心实体解码、字符编码、CDATA 部分等。XML 解析器将为您完成所有这些工作。

查看JDOM 以获得比使用原始 DOM/SAX 实现更简单的 XML 解析方法。

【讨论】:

以上是关于java将字符串转换为xml并解析节点[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android:解析 XML DOM 解析器。将子节点转换为字符串

将字符串 XML 片段转换为 Java 中的文档节点

如何在QT中将xml节点数据转换为字符串[重复]

xml解析base64字符串丢失问题

PHP - xml到json转换:“无法将字符串解析为XML”

如何在 Java 中解析包含 XML 的字符串并检索根节点的值?