如果我要处理几种标准格式,那么在C# 3.5中封装它们的最佳实践方法是什么?我想以类似于System.ServiceModel.Syndication命名空间的东西结束。
封装ADF 1.0 XML标准的类就是一个例子。它有主XML根节点,6个子元素,其中4个是必需的IIRC,几个必需的和可选的元素和属性。我希望这个类至少为所有需要的部分创建XML,直到一个完整的XML表示。(说得通)
使用LINQ4XML和扩展类等,必须有一些关于快速生成类结构以供使用的思想。是?不?:)
我不确定我是否提供了足够的细节,以得到一个正确的答案,但我愿意考虑的想法,现在。
提亚
发布于 2010-02-24 01:57:22
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);
}发布于 2010-02-24 01:17:41
为什么不直接遵循SyndicationFeed对象的模式呢?创建一个类,该类接受xml文档的Uri或只接受文档片段。
然后,根据您的标准解析文档(如果您愿意,可以使用LinqToXml进行此解析,但如果您对它们感到满意,regEx可能会更快)。当文档不通过规范规则时,适当地抛出异常或跟踪错误。
如果文档通过了解析步骤,那么将文档的各个部分分解为对象的公共getter属性。然后将完全水化的对象返回给使用者使用。
对我来说挺直接的。这是你想要的还是你想要的不仅仅是这个?
https://stackoverflow.com/questions/2322036
复制相似问题