2010-02-23 56 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

相关问题