Webサービス用のアダプタを開発している間、私はこのような応答直面終わっている:複数のXML「ファイル」
<?xml version="1.0" encoding="UTF-8"?>
<ResponseHeader version="1.0">
<ResponseCode>T100</ResponseCode>
<SubmissionIdentifier>1</SubmissionIdentifier>
</ResponseHeader>
<?xml version="1.0" encoding="UTF-8"?>
<SubmissionProgress xmlns="sss"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
status="inProgress"
submissionIdentifier="1"
submissionType="live">
<PFile status="rejected"
index="1"
pFileIdentifier="999">
<Exception errorCode="2001" outcomeType="rejectFile">
<Description>There.file. </Description>
<SourceRecord index="3">...</SourceRecord>
</Exception>
</PFile>
</SubmissionProgress>
ResponseHeaderとSubmissionProgress(および内部のすべての要素を)クラスがxjcによって正常に生成されました。もしこの文字列を2つの異なる文字列に分割すると、両方のクラスを完全にアンマーシャリングできます。
しかし、私はそれを同じStringに保持し、それを両方のアンマーシャラーに順番に渡そうとすると、最初のアンマーシャルでブレークします。
私は1つの文字列の両方からアンマーシャリングするためにこのコードを使用しています:
Reader reader = new StringReader(response);
JAXBContext jcrh = JAXBContext.newInstance(ResponseHeader.class);
JAXBContext jcsp = JAXBContext.newInstance(SubmissionProgress.class);
Unmarshaller urh = jcrh.createUnmarshaller();
Unmarshaller usp = jcsp.createUnmarshaller();
ResponseHeader rh = (ResponseHeader) urh.unmarshal(reader);
SubmissionProgress sr = (SubmissionProgress) usp.unmarshal(reader);
そして、私は次の例外(でResponseHeader RH =(ResponseHeader)urh.unmarshal(リーダー);)を取得:
を[email protected]
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
(...)
このような場合(複数のXMLファイルを1つのストリームで使用する)にはいくつかのJAXB調整がありますか?
クイックレスポンス、ありがとうございました。何か簡単なことがあれば、いくつかのコードで詳しく説明できますか?イベントシーケンス(ストリーム内のXMLファイルの順序である場合)は常に同じであり、実際にはそれがあります。 –
私は何かをまとめる時間がありません。 [このフィルタ](http://stackoverflow.com/questions/277502/jaxb-how-to-ignore-namespace-during-unmarshalling-xml-document)を参照してください。それは別のことをしていますが、文書の最後のシミュレーションでドロップできる全体的なデザインを十分に理解できます。 –
確かに、ドキュメントの最後にどこにドロップしたいかを検出することができました。ちょうど今それを落とす方法を逃した。 –