例外:
javax.xml.bind.UnmarshalException: 予期しない要素 (uri:"http://xxx.com/xxxServices/response"、local:"A")。期待される要素は <{http://xxx.com/xxxServices/common/acknowledgement}I> です
xjc を使用して Java クラスを生成するために使用される XSD:
<xs:import namespace="http://xxx.com/xxxServices/common/acknowledgement" schemaLocation="../common_acknowledgement_v1.0.xsd"/>
<xs:element name="A" type="abr:AType">
</xs:element>
</xs:schema>
解析しようとしているサンプル XML:
<ns0:A xmlns:ns0="http://xxx.com/xxxServices/response" xmlns:ns1="http://xxx.com/xxxServices/common/acknowledgement">
<ns1:I UID="24" Type="Sequential"/>
<ns1:S>
<ns1:Date Year="2012" Month="05" Day="15"/>
<ns1:Time Hour="3" Minute="31" Second="54"/>
</ns1:S>
<ns1:AAck>
<ns1:I UID="24" Type="Sequential"/>
<ns1:B>eDUA</ns1:B>
<ns1:AckResult>Received</ns1:AckResult>
<ns1:P>47</ns1:P>
</ns1:AAck>
</ns0:A>
JAXBIntrospector
からアンラップを行うために使用していますunmarshal()
。
また、jaxb が @XmlRootElement タグを、実際に RootElement であるはずのクラスではAck
なく、生成された別のクラスに配置していることに気付きました。AType
注釈を上から削除し、Ack
以下AType
で確認しました:
@XmlRootElement(name="A", namespace="http://xxx.com/xxxServices/response")
&
@XmlRootElement(name="AType")
また、それが生成された方法と同じように確認しまし@XmlRootElement
た。Ack
私はどこで何をしているのでしょう!