我们正在使用基于第三方开发的标准的XML文件与第三方服务进行通信。它们为每个“事务”提供了一个XML模板,我们使用System.Data.DataSet.ReadXML将其读入DataSet,在DataSet中设置正确的值,然后使用System.Data.DataSet.WriteXML写回XML。此过程适用于多个不同的文件。但是,我现在正在添加一个额外的文件,该文件要求在其中一个字段上设置整数数据类型。这是缩小版:
<EngineDocList>
<DocVersion>1.0</DocVersion>
<EngineDoc>
<MyData>
<FieldA></FieldA>
<FieldB></FieldB>
<ClientID DataType="S32"></ClientID>
</MyData>
</EngineDoc>
</EngineDocList>
当我查看通过调用ReadXML创建的DataSet到此文件时,MyData表包含FieldA,FieldB和MyData_ID列。如果我然后设置MyData_ID的值然后调用WriteXML,则导出XML没有ClientID的值。再一次,如果我采用DataType方式,那么我确实有一个ClientID列,我可以正确设置它,导出的XML具有正确的值。但是,第三方要求定义此数据类型。
有关为什么ReadXML会重命名此标记或者如何让这个过程工作的任何想法?或者,我可以改变我们阅读和编写XML的方式,但显然不会走这条路,尽管这些建议也会受到欢迎。感谢。
答案 0 :(得分:2)
我不会使用DataSet执行此操作。它特别关注模拟关系模型。很多XML都不会遵循该模型。当DataSet看到的东西与世界的想法不匹配时,它会忽略它们或更改它们。在任何情况下都不是一件好事。
我会为此使用XmlDocument。