0
我生成的類使用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 2011-02-23 21:48:51
我很好奇,我正在學習xml,xsd,jaxb等,你是如何知道這個答案的,我將如何在沒有這個論壇的情況下學會這個答案? – bmw0128 2011-02-23 21:50:20
@ bmw0128 - 當我學習時,它是由同事組成的,只是嘗試一些事情,Oracle(然後是Sun)文檔,Google教程搜索,直到他們工作才嘗試。 – justkt 2011-02-23 22:46:37