0
我想驗證一個xml文件。這是我的xsd:org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配的通配符是嚴格的,但是對於元素'ReceiptTime'沒有聲明。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EXTRACT">
<xs:complexType>
<xs:sequence>
<xs:element ref="HEAD"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="HEAD">
<xs:complexType>
<xs:sequence>
<xs:element name="RequestId" type="xs:integer"/>
<xs:element name="RequestsInBatch" type="xs:string"/>
<xs:element name="PeriodDate" type="xs:date"/>
<xs:element name="Type" type="xs:string"/>
<xs:element name="StartDate" type="xs:date"/>
<xs:element name="EndDate" type="xs:date"/>
<xs:element name="PricingDate" type="xs:date"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
這裏是我的xml文件
<?xml version='1.0'?>
<EXTRACT>
<HEAD>
<RequestId>1</RequestId>
<RequestsInBatch>1,2</RequestsInBatch>
<PeriodDate>2013-03-31</PeriodDate>
<Type>Monthly</Type>
<StartDate>2013-03-01</StartDate>
<EndDate>2013-03-31</EndDate>
<PricingDate>2013-03-29</PricingDate>
<ReceiptTime>2013-04-02 12:30:00</ReceiptTime>
<CreateTime>2013-04-02 16:00:00</CreateTime>
<RecordCount>3</RecordCount>
<ExceptionCount>1</ExceptionCount>
<ExtractType>FLOWS</ExtractType>
<ExtractCurrency>USD</ExtractCurrency>
</HEAD>
</EXTRACT>
我不關心其他的標籤,我認爲是
<xs:any minOccurs="0"/>
但是,當我指出在Java中運行時,出現以下錯誤org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配的通配符是嚴格的,但是對於元素'ReceiptTime'沒有發現聲明
如何驗證文件,以便忽略任何我不在xsd中聲明的元素,因爲我不需要它們,但它們仍然位於xml文檔中?我無法控制xml文檔的內容,所以我只需要關注我想要提取的數據。
現在我收到以下錯誤:org.xml.sax.SAXParseException:cvc-complex-type.2.4.d:找到以元素'CreateTime'開頭的無效內容。預計在這一點上不會有子元素。我認爲這是說它只能允許一個元素。我如何讓它接受多個元素? –
感謝您的信息,這有助於。只需簡單的修改,添加'maxOccurs =「unbounded」'就可以工作。所以現在它變成: ' ' –