2009-05-27 26 views
3

我有一個XML文件,它保存數據源的配置數據,以及在'dataseries'元素中保存的相關查詢。什麼時候應該在讀取xml時使用xml模式(.xsd)?

因爲我不需要由XML構成的域對象,而只是讀取設置並用於配置連接等。我想知道在使用我定義的XML模式時是否有任何優勢?

我正在使用LINQ to XML來讀取我的XML,最初認爲使用強類型XML是一個好主意。

我應該使用.xsd還是它是矯枉過正?

有模擬的XML文件:

<?xml version="1.0" encoding="utf-8" ?> 
<datasource name=" Datasource" cache="true"> 
    <database> 
    <connection> 
     <provider-name>sqlServer6.0</provider-name> 
     <source name="E5" 
      connectionString=""/> 
    </connection> 
    <update-interval>30</update-interval> 
    <minimum-update-interval>2</minimum-update-interval> 
    </database> 
    <dataseries name="" identifier="e5"> 
    <graph-type></graph-type> 
     <query> 
     SELECT Period, Price 
     FROM PriceUS 
     WHERE Date = @date 
     </query> 
    </dataseries> 
    <dataseries name="" identifier="e52"> 
    <graph-type></graph-type> 
    <query> 
     SELECT Period, Price 
     FROM PriceUS 
     WHERE Date = @date 
    </query> 
    </dataseries> 
</datasource> 

回答

4

有兩個級別的「正確」的XML文檔:well-formed and valid。 格式良好意味着它符合XML規範,並且有效意味着它符合您的模式。如果並且當您接受陌生人的XML文檔時,在繼續前進之前檢查文檔的有效性通常是一個好主意。

正如您所提到的,XML架構也可用於生成XML數據綁定實體。當您向世界或您的客戶發佈服務或模式時,模式文檔可以用作規範。世界或您的客戶可以使用XSD文件來驗證或綁定到您交換的XML文檔。

+0

由於模式是插件框架的一部分,因此.xsd將作爲規範使用。由於我不需要數據綁定,而使用LINQ的查詢將會像事情一樣複雜,我可能會保持簡單! – theringostarrs 2009-05-27 04:33:20

+0

你對XML文件有絕對的控制嗎?其他人是否可以修改它或向您發送另一個?如果是這樣,驗證(模式)。如果不是的話......無論如何可能會驗證。 – 2009-05-27 15:13:16

0

模式是很好的,當你想驗證的XML,例如,確保某些元素存在或有一組有限的值。如果您將使用XML進行大量工作,並且將XML轉換爲C#對象更容易,那麼架構也很好 - 在這種情況下,您可以使用xsd.exe代碼生成器來生成可以編組的C#對象,以及從XML中解組。

1

從技術上講,XML中有兩種正式的模式類型。原始模式語法稱爲文檔類型定義(Document Type Definition,DTD),它是古代SGML時代的延續。然後是W3C標準XSD,它與現代數據更兼容。

我提到的唯一原因是,您可能會收到一個使用DTD描述的XML文件,您可能需要知道如何處理它。

但是,請朋友不要讓朋友爲新應用程序創建DTD。

相關問題