4

我正在编写一个基于 REST 的 web 服务代码,其中一个 xml 被读取为 POST 正文内容。<REQ>J*Wt!&Gs+aGphxR</REQ>

数据可能包含字母数字或符号。

我正在使用 json-jena jar 并将 xml 转换为 java 对象并读取值。

JSONObject jsonObject = XML.toJSONObject(body);

对于上面的特定请求,我收到如下错误 org.json.JSONException: Missing ';' 在 XML 实体中:&gs at 40 [character 41 line 1]

请让我知道如何无误地转换为 json 对象。

我的要求是读取 REQ 标签与用户指定的实际值(不是编码字符串)之间的值。

4

3 回答 3

4

问题是供应商没有发送 XML。在 XML 中,an&开始一个必须以 a 结尾的实体;

您的示例的正确 XML 是<REQ>J*Wt!&amp;Gs+aGphxR</REQ>通过替换其实体&引用&amp;(XML 还包括&lt;&gt;for <and >)或可能将数据包含在 CDATA 部分中<REQ><![CDATA[J*Wt!&Gs+aGphxR\]]></REQ>

于 2012-10-09T00:55:35.980 回答
1

这似乎是在抱怨 XML 格式正确,而不是在进行转换本身时出现任何错误(尽管它可能将读取 XML 作为转换的第一步,这就是您看到错误的原因)。

首先,您是如何制作内容的?你应该确保它本身是格式良好的。像您这样的 XML 元素<REQ>不能只包含任意文本。字符&<必须在元素内容中转义('或者"可能需要在属性内容中转义)。为了避免需要转义&<在元素内容内,您可以使用 CDATA 部分,假设您的解析器支持它们,但请记住特定序列]]>需要转义。

于 2012-10-09T00:56:05.373 回答
1

这不是有效的 XML,因为该&字符是保留的。为了让它工作,你可能不得不像这样逃避它&amp;。其他保留的符号是"<>。您可以像这样转义这些:&quot;&lt;&gt

于 2012-10-09T00:56:31.570 回答