我在使用JAXB RI 2.2.1解组XML文档中的元素时遇到问题。
元素定义如下(完整的XSD太大而无法发布):
<xsd:element name="PatternExpression" type="PatternExpression_Type"/>
<xsd:complexType name="PatternExpression_Type">
<xsd:choice>
<xsd:element ref="Pattern"/>
<xsd:sequence>
<xsd:element ref="PatternOperator"/>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="Pattern"/>
<xsd:element ref="PatternExpression" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
以下是我试图解组的XML:
<PatternExpression>
<PatternOperator tc="2">and</PatternOperator>
<Pattern>
<PropertyName>FirstName</PropertyName>
<PropertyValue>John</PropertyValue>
</Pattern>
<Pattern>
<PropertyName>LastName</PropertyName>
<PropertyValue>Doe</PropertyValue>
</Pattern>
</PatternExpression>
当我通过unmarshaller运行文档时,生成的PatternExpression对象包含PatternOperator和一个Pattern,它恰好是序列中的最后一个。
有没有人对为什么没有将Pattern对象添加到列表中有任何建议?
我认为PatternOperator的存在将允许JAXB确定该元素的选择。
仅供参考,XML架构由第三方控制,因此无法修改。