2010-02-23 55 views
0

如果我正在處理幾個標準 xml格式,那麼將它們封裝在C#3.5中的最佳實踐方式是什麼?我想最終得到類似於System.ServiceModel.Syndication命名空間的東西。使用.NET 3.5創建類似於System.ServiceModel.Syndication的東西

封裝ADF 1.0 XML standard的類將是一個示例。它有主要的XML根節點,6個子元素,其中4個是需要IIRC的,還有幾個必需的和可選的元素和屬性。我希望該類至少創建所有必需片段的XML,直到完整的XML表示。 (合理)。

使用LINQ 4 XML和擴展類等,必須有一些想法快速生成一個類結構使用。是?沒有? :)

我不確定我是否給了足夠的細節來獲得一個正確的答案,但是現在願意接受創意。

TIA

回答

0

XML序列化似乎是一種好方法。你甚至可以使用XSD.EXE自動生成的類...


編輯

注意,通過該工具生成的類名稱通常不是很方便,所以你可能要重新命名他們。您可能還想將T的數組更改爲List<T>,以便您可以在需要的地方輕鬆添加項目。

假設根元素的類名爲ADF,您可以按如下加載ADF文檔:

ADF adf = null; 
XmlSerializer xs = new XmlSerializer(typeof(ADF)); 
using (XmlReader reader = XmlReader.Create(fileName)) 
{ 
    adf = (ADF)xs.Deserialize(reader); 
} 

,並保存它:

ADF adf = ...; // create or modify your document 
... 
XmlSerializer xs = new XmlSerializer(typeof(ADF)); 
using (XmlWriter writer = XmlWriter.Create(fileName)) 
{ 
    xs.Serialize(writer, adf); 
} 
+0

Cool工具,謝謝。我已經生成了我的類,現在正試圖找出使用它們的正確方法。任何樣品都方便嗎? – 2010-02-24 17:11:39

+0

看到我的編輯,我添加了代碼示例 – 2010-02-24 17:51:17

+0

謝謝!我會玩這個,但它似乎回答我的問題。 – 2010-02-26 16:54:02

-2

爲什麼不跟着SyndicationFeed對象在聚合命名空間的格局?創建一個接受Uri到xml文檔的類,或者只接收文檔片段。

然後根據您的標準解析文檔(如果您願意,可以使用LinqToXml完成解析,但如果您對它們感到滿意,regEx可能會更快)。當文檔沒有通過規範規則時,適當地拋出異常或跟蹤錯誤。

如果文檔通過解析步驟,則將文檔的各部分拆分爲對象的公共getter屬性。然後將充分水合的物體返回給消費者使用

看起來很直截了當。那是你在追求什麼或者你在尋找什麼比這更多?

+1

-1:你不能一般情況下,使用正則表達式來解析XML。 – 2010-02-24 01:21:20

+0

是的,正則表達式對於這類東西絕對是一個壞主意......無論如何,.NET爲讀取XML提供了大量的支持 – 2010-02-24 01:56:35

相關問題