1

例外:

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私はどこで何をしているのでしょう!

4

0 に答える 0