【发布时间】:2013-05-27 14:12:08
【问题描述】:
我正在尝试解析和验证 XML (jaxb-impl-2.2.4.jar),但出现错误:
cvc-complex-type.2.4.a:发现无效内容以 元素“代码系统”。应为“{codeSystem}”之一。
我不确定是什么原因造成的,因为我认为我的 XML 看起来是正确的。
codeSystem 的 Schema 要求:
<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 和 codeSystem 元素(如 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>
【问题讨论】:
-
模式中的 CodeSystem 类型是如何定义的?
-
对我来说看起来不错。您可以尝试在不使用 JAXB 的情况下根据架构验证文档吗?
标签: java xml parsing validation jaxb