xjcを使用してクラスを生成しましたが、次のXMLドキュメントを処理しようとしています。 私はエラーを取得しています:JAXB minOccursとUnmarshalException
javax.xml.bind.UnmarshalException: Unexpected end of element {http://schemas.xmlsoap.org/soap/envelope/}:Body
私はXMLは、私が障害要素に追加するとき、それはエラーが発生せずに処理を行います(Fault要素が含まれていないので、それがあると信じて 応答をRETRIEVAL_IDが含まれていますどちらか。私は、スキーマ内でminOccurs = 0を使ってこれを修正すると思っていましたが、何もしませんでした。(少なくとも私がやった方法は) JAXBをこの状況で使用することは可能ですか?これらの要素が存在する可能性がありますが、同時に両方ではありません。
XMLの回答:
<?xml version = '1.0' encoding = 'UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<env:Header>
<bmw:rule xmlns:bmw="http://adr.com/bmw">
<bmw:customer>44</bmw:customer>
<bmw:schemaName>ABC</bmw:schemaName>
<bmw:schemaVersion>1.0</bmw:schemaVersion>
</bmw:rule>
</env:Header>
<env:Body>
<bmw:RETRIEVAL_ID xmlns:bmw="http://adr.com/bbs">15086</bmw:RETRIEVAL_ID>
</env:Body>
</env:Envelope>
スキーマ:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bmw="http://adr.com/bmw">
<xs:import namespace="http://adr.com/bmw" schemaLocation="bmw.xsd"/>
<xs:element name="Envelope">
<xs:complexType>
<xs:sequence>
<xs:element ref="env:Header"/>
<xs:element ref="env:Body"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element ref="bmw:rule"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element ref="bmw:RETRIEVAL_ID" minOccurs="0"/>
<xs:element ref="env:Fault" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Fault">
<xs:complexType>
<xs:sequence>
<xs:element ref="bmw:fault"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
それは、感謝SOOOO多く!!!!!!!!!働いた – bmw0128
私は好奇心が強いです、私はxml、xsd、jaxbなどを学んでいます。この回答をどうやって知ったのですか? – bmw0128
@ bmw0128 - 私が学んでいたとき、それは同僚の組み合わせで、試してみるだけでした.Oracle(それからSun)のドキュメント、チュートリアルのためのグーグル、仕事をするまで試してみました。 – justkt