我试图解组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; lineNumber:1; columnNumber:212;元素类型“ctag”必须后跟属性规范,“&gt;”或“/&gt;”。]
unmarshall的xml输入作为字符串阅读器提供
StringReader sr = new StringReader("ABOVE XML");
unmarshaller.unmarshal(sr);
我有两个类 - 一个用于GetResultResponse,另一个用于ResultSet。
我试图理清的事情 - 1. CharacterEscapeHandler - 当我将这个问题分配给Unmarshaller时出现错误,因为只有marshaller接受了这个。 2. XmlJavaTypeAdapter - 在处理和从Adapter返回值之前发生解组。 3. BeforeUnmarshall - 将侦听器设置为unmarshaller;为命令返回null。 4. XmlMixed和XmlAnyElement - 期待正确的结束标记。
如果您有任何疑问,请告诉我。 在此先感谢
答案 0 :(得分:1)
目前的XML无效。您需要在此处正确转义文本内容:
<Command>RTRV-ALM-ALL:STLMJWB0201000003FIS:ALL:<ctag=dq>;</Command>
作为
<Command>RTRV-ALM-ALL:STLMJWB0201000003FIS:ALL:<ctag=dq>;</Command>