XML發佈之前驗證數據我寫從存儲器讀取逗號分隔值(和它們的標籤)的字符串,並將它們打包到一個XML文件發送服務。數據所有者使用每個XML結構正在生成關聯的XSD文件。在通過Web服務發佈XML之前,我想讀取和XSD文件以驗證.txt
文件中的數據標籤列表。如果檢測到XSD和txt文件之間存在差異,我希望代碼拋出異常。在成功匹配時,它會從.txt
文件,包中提取值,併發布XML請求。我正在尋找整個過程(從輸入到輸出)的一個例子,說明如何完成這個過程。利用XSD通過Web服務
讀取輸入文件並收集屬性和值(TestValuesIN.txt)
"test.Foo", 122;
打開XSD文件和對元素的我輸入文件的列表中的元素進行一到一個匹配。現在我只關心XSD中存在的「Test.Foo」(元素:Test.Foo val :)。 (TextXSD.xsd)
<?xml version="1.0"?>
<!-- Generated using Flame-Ware Solutions XML-2-XSD v2.0 at http://www.flame-ware.com/Products/XML-2-XSD/ -->
<xs:schema id="batch-execution" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="batch-execution" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="insert">
<xs:complexType>
<xs:sequence>
<xs:element name="test.Foo" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="val" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="fire-all-rules">
<xs:complexType>
<xs:attribute name="max" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="get-objects">
<xs:complexType>
<xs:attribute name="out-identifier" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
然後,XML發佈到
http://mycamelhump.<myurl>.com:8080/drools-camel-service/kservice/CommTestXML/execute
URI
<batch-execution>
<insert>
<test.Foo>
<val>122</val>
</test.Foo>
</insert>
<fire-all-rules max="-1"/>
<get-objects out-identifier="also-foo"/>
</batch-execution>
的代碼獲得的結果打印輸出到(TestValuesOUT.txt)
"Test.Foo", 100;
問題在哪裏? – walther 2013-02-19 17:57:01
感謝Walther。在寫這篇文章的熱潮中,我錯過了這個問題。 – Nanohurtz 2013-02-19 18:27:46
那麼你想在將CSV文件轉換爲XML之前驗證它的內容嗎?這就是你要求的一個例子嗎? – 2013-02-19 18:30:45