XML标记名称被定义的类型覆盖

时间:2009-03-24 16:18:10

标签: c# xml

我们正在使用基于第三方开发的标准的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的方式,但显然不会走这条路,尽管这些建议也会受到欢迎。感谢。

1 个答案:

答案 0 :(得分:2)

我不会使用DataSet执行此操作。它特别关注模拟关系模型。很多XML都不会遵循该模型。当DataSet看到的东西与世界的想法不匹配时,它会忽略它们或更改它们。在任何情况下都不是一件好事。

我会为此使用XmlDocument。