在C#中读取和写入XML文档的最佳方法是什么?

时间:2010-05-21 17:40:46

标签: c# xml cxml

我知道这是一个模糊的开放式问题。我希望得到一些大方向。

我需要在ASP.NET C#站点/应用程序中添加cXML punchout。这正在取代我多年前在ColdFusion中写的东西。

我是一位经验丰富的C#开发人员,但我对XML做的并不多。在.NET中处理XML似乎有很多不同的选择。

以下是开放式问题:假设我有某种形式的XML文档,例如文件或字符串,将其读入我的代码的最佳方法是什么?我想获取数据然后查询数据库等.cXML文档大小和我们的流量都很小,因此将cXML文档加载到内存中不是问题。

我应该:

1)基于dtd手动构建类并使用XML Serializer?

2)使用工具生成类。有可从Ariba.com下载的示例cXML文件。 我尝试使用xsd.exe生成xsd,然后使用xsd.exe / c生成类。当我尝试反序列化时,我得到错误,因为似乎有些“混淆”一些元素应该是单个值还是数组。

我尝试使用CodeXS在线工具,但如果我尝试反序列化示例文档,则会在其日志和错误中出错。

2)创建数据集和ReadXml()?

3)创建一个类型化数据集和ReadXml()?

4)使用Linq to XML。我经常使用Linq来对象,所以我对Linq很熟悉但是我很难看到它在这种情况下给我的东西。

5)其他一些方法。

我想我需要提高对XML的理解,但即便如此......我是否错过了一些明显的方法呢?在旧的ColdFusion站点中,我发现了一个免费组件(“标签”),它基本上忽略了任何模式,并将XML读入“结构”,这本质上是一系列嵌套的哈希表,然后在代码中易于阅读。这可能很邋but但是很有效。

我还需要从C#对象生成XML文件。也许Linq to XML会对此有所帮助。我可以从默认的“模板”文档开始并在保存之前对其进行操作。

感谢您的任何指示...

1 个答案:

答案 0 :(得分:1)

如果您需要以精确格式生成任意XML,则应使用LINQ-to-XML手动生成它。