我有一个元素 A,它可以是简单元素,也可以是动态创建的复杂元素。
示例 xml 在这里:
<A>john</A>
<A>
<B>kathy</B>
<C> bat </C>
</A>
我的xsd是这样的:
<xsd:element name="A">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:sequence>
<xsd:element name="B" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="C" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
</xsd:element>
但在这里我遇到了一个异常:
元素“A”不能有字符 [children],因为该类型的内容类型是纯元素
最佳答案
您需要在类型中指定混合内容:
<xsd:element name="A">
<xs:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:sequence>
<xsd:element name="B" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="C" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
此外,在选项中包含一个序列也有点多余。你要么想要一个序列,要么不想要。
希望对您有所帮助。
关于java - 元素中的 xsd 验证抛出内容类型异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036499/