解析XML文件时遇到问题。使用的XML模式是:
<xsd:complexType name="QuoteFIBondPrice">
<xsd:complexContent>
<xsd:sequence>
<xsd:element name="BidPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="MidPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="OfferPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="MaturityDate" type="DbGMLType:SystemName" minOccurs="0"/>
<xsd:element name="Coupon" type="DbGMLType:SystemName" minOccurs="0"/>
<xsd:element name="DisplayName" type="DbGMLType:SystemName" minOccurs="0"/>
</xsd:sequence>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="QuoteFIBondValue">
<xsd:all>
<xsd:element name="QuoteValue" type="DbGMLType:QuoteValue" minOccurs="0"/>
</xsd:all>
</xsd:complexType>
我得到的错误信息是:
class com.db.dbadapter.util.xml.XMLValidatorParserException:遇到SAXParseException: [s4s-elt-invalid-content.1:'QuoteFIBondPrice'的内容无效。元素'序列'无效,错位或过于频繁发生。 (第53行,第18列)]
你可以帮我一把吗?我已经更改了XML架构,现在就是这样:
<xsd:complexType name="QuoteFIBondPrice">
<xsd:sequence>
<xsd:element name="BidPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="MidPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="OfferPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="MaturityDate" type="DbGMLType:SystemName" minOccurs="0"/>
<xsd:element name="Coupon" type="DbGMLType:SystemName" minOccurs="0"/>
<xsd:element name="DisplayName" type="DbGMLType:SystemName" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="QuoteFIBondValue">
<xsd:all>
<xsd:element name="QuoteValue" type="DbGMLType:QuoteValue" minOccurs="0"/>
</xsd:all>
</xsd:complexType>
经过测试,我意识到之前的错误已更改为:
** [cvc-complex-type.2.4.a:从元素'BidPrice'开始发现无效内容。其中一个'{MaturityDate,Coupon,DisplayName}'是预期的。 (第35行,第17栏)]
[cvc-complex-type.2.3:元素'BidPrice'不能包含字符[children],因为类型的内容类型仅为元素。 (第35行,第35列)]
[cvc-complex-type.2.3:元素'MidPrice'不能有字符[children],因为类型的内容类型只是元素。 (第36行,第38列)] class com.db.dbadapter.util.xml.XMLValidatorParserException:遇到SAXParseException:
[cvc-complex-type.2.3:元素'OfferPrice'不能包含字符[children],因为类型的内容类型仅为元素。 (第34行,第39栏)]
[cvc-complex-type.2.4.a:从元素'BidPrice'开始发现无效内容。其中一个'{MaturityDate,Coupon,DisplayName}'是预期的。 (第35行,第17栏)]
[cvc-complex-type.2.3:元素'BidPrice'不能包含字符[children],因为类型的内容类型仅为元素。 (第35行,第35列)]
[cvc-complex-type.2.3:元素'MidPrice'不能有字符[children],因为类型的内容类型只是元素。 (第36行,第38栏)] **
@Jon,@ skaffman,你有什么建议吗?
非常感谢
答案 0 :(得分:2)
您不需要complexContent
元素,我不认为,您可以将sequence
直接放在complexType
下:
<xsd:complexType name="QuoteFIBondPrice">
<xsd:sequence>
<xsd:element name="BidPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="MidPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="OfferPrice" type="QuoteFIBondValue" minOccurs="0"/>
<xsd:element name="MaturityDate" type="DbGMLType:SystemName" minOccurs="0"/>
<xsd:element name="Coupon" type="DbGMLType:SystemName" minOccurs="0"/>
<xsd:element name="DisplayName" type="DbGMLType:SystemName" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
答案 1 :(得分:0)
我认为这是无效的架构,而不是消息本身。 complexContent
旨在包含注释,限制或扩展。
您确定它不仅仅是complexType
而不是嵌套complexContent
吗?