2

我试图解组 xml 导致 saxparser 异常,因为元素的值具有未正确关闭的标记元素。这是我得到并且必须处理的。

这是示例 xml -

<GetResultResponse>
  <ExecutionID>17716868</ExecutionID>
  <Device>STLMJWB</Device>
  <Status>Success</Status>
  <ResultSet>
    <Command>RTRV-ALM-ALL:STLMJWB0201000003FIS:ALL:<ctag=dq>;</Command>
    <CommandType>Raw</CommandType>
    <commandResult>Success</commandResult>
  <ResultSet>
</GetResultResponse>

上面的 xml 包含作为命令值的其他字符串,并且标签未正确关闭,导致以下异常 -

[org.xml.sax.SAXParseException; 行号:1;列号:212;元素类型“ctag”必须后跟属性规范,“>”或“/>”。]

unmarshall 的 xml 输入作为字符串阅读器提供

StringReader sr = new StringReader("ABOVE XML");
unmarshaller.unmarshal(sr);

我有两个类 - 一个用于 GetResultResponse,另一个用于 ResultSet。

我试图解决的事情 - 1. CharacterEscapeHandler - 当我将这个属性分配给 Unmarshaller 时出错,因为只有 marshaller 接受这个。2. XmlJavaTypeAdapter - 在处理和从适配器返回值之前发生解组。3. BeforeUnmarshall - 设置监听器为解组器;为命令返回 null。4. XmlMixed 和 XmlAnyElement - 需要正确的结束标记。

如果您有任何疑问,请告诉我。提前致谢

4

1 回答 1

1

您当前的 XML 无效。您需要在此处正确转义文本内容:

<Command>RTRV-ALM-ALL:STLMJWB0201000003FIS:ALL:<ctag=dq>;</Command>

作为

<Command>RTRV-ALM-ALL:STLMJWB0201000003FIS:ALL:&lt;ctag=dq>;</Command>
于 2013-08-16T14:30:11.233 回答