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 用の 2 つのクラスがあります。

私が整理しようとしたこと - 1. CharacterEscapeHandler - マーシャラーのみがこれを受け入れるため、このプロパティをアンマーシャラーに割り当てたときにエラーが発生しました。2. XmlJavaTypeAdapter - アンマーシャリングは、アダプタから値を処理して返す前に発生します。3. BeforeUnmarshall - リスナーを unmarshaller に設定します。コマンドに対して 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 に答える