2013-05-31 58 views
0

我試圖解析和驗證XML(JAXB-implement執行-2.2.4.jar),而我得到的錯誤:JAXB驗證錯誤 - cvc-complex-type.2.4.a:從元素'codeSystem'開始找到無效內容。一個 '{} codeSystem' 有望

cvc-complex-type.2.4.a: Invalid content was found starting with element 'codeSystem'. One of '{codeSystem}' is expected.

我不知道是什麼導致它,因爲我認爲我的XML看起來是正確的。

爲codeSystem的架構要求:

<xs:complexType name="GenericPropertyType"> 
    <xs:element name="codeSystem" type="tns:CodeSystem"> 
    </xs:element> 
    <xs:element name="code" type="tns:Code"> 
    </xs:element> 
    <xs:element name="codeText" type="tns:CodeText" minOccurs="0"> 
    </xs:element> 
</xs:complexType> 

到的codeSystem所屬的GenericProperty Java類:正在解析

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "GenericPropertyType", propOrder = { 
    "codeSystem", 
    "code", 
    "codeText" 
}) 
public class GenericPropertyType { 

    @XmlElement(required = true) 
    protected String codeSystem; 
    @XmlElement(required = true) 
    protected String code; 
    @XmlElement 
    protected String codeText; 

    /** 
    * Getters and Setters ommitted. 
    * 
    */ 
} 

的XML:

<genericProperty> 
    <codeSystem>8B-30-33</codeSystem> 
    <code>EMAIL_RETRY_COUNT</code> 
    <codeText>5</codeText> 
</genericProperty> 

我試着它有和沒有提供genericProperty和中的命名空間像xmlns="http://www.somedomain.com/context"元素,但錯誤仍然相同。有任何想法嗎?

編輯 的CodeSystem型架構:

<xs:simpleType name="CodeSystem"> 
<xs:annotation> 
    <xs:documentation>Simple Type with Input Restictions</xs:documentation> 
</xs:annotation> 
<xs:restriction base="xs:string"> 
    <xs:whiteSpace value="collapse" fixed="true"/> 
    <xs:maxLength value="64" fixed="true"/> 
</xs:restriction> 

+0

如何在模式中定義類型的CodeSystem? – flup

+0

看起來不錯,對我來說。你能否在不使用JAXB的情況下針對模式驗證文檔? – flup

回答

3

我能夠加入這一行到正在驗證對(該XSD XMLSchema的來解決問題文件):elementFormDefault =「qualified」

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="http://www.somedomain.com/context" 
     xmlns:tns="http://www.somedomain.com/context" 
     **elementFormDefault="qualified"**> 

我在package-info.java類中聲明瞭這個,但是我放棄了檢查它是否在提供給JAXB解析器的XSD模式中。

相關問題