【问题标题】:C# Reading XML to dataset throwing error with nested element of same nameC#读取XML到数据集抛出错误与同名嵌套元素
【发布时间】:2021-12-29 03:09:04
【问题描述】:

数据集 dset = new DataSet(); dset.ReadXml(文件名);

我在将 xml 读取到数据集时遇到的错误:无法将 SimpleContent 列添加到包含元素列或嵌套关系的表中。

我知道是什么导致了这个问题。导致问题的我的 xml 元素类似于下面的示例 xml:(根据我对错误的研究,CreditCardDetail 元素是导致问题的元素。此外,此元素数据稍后不会在我们的代码中使用,因此我需要以某种方式跳过此元素并动态加载其他元素数据)

<PaymentData>
  <Amount/>
  <Change/>
  <CreditCardDetail i:nil="true"/>
</PaymentData>
<PaymentData>
  <Amount/>
  <Change/>
  <CreditCardDetail>
     <CardNumber i:nil="true"/>
     <Result i:nil="true"/>
  </CreditCardDetail>
</PaymentData>

我正在尝试将 xml(不在我们的控制范围内)读取到数据集,然后访问数据表以将数据保存到 sql 表中。但是由于像上面这样的嵌套元素导致错误,我不知道如何进一步。有人可以指导我任何替代解决方案。

【问题讨论】:

    标签: c# datatable nested dataset readxml


    【解决方案1】:

    问题出在CreditCardDetail。您在 XML 中为 CreditCardDetail 定义了不同的结构。第二个 CreditCardDetail 将失败,因为它已经为 XML 定义了 SimpleContent。您可以将 XML 中第二个 CreditCardDetail 的名称更改为其他名称。

    【讨论】:

    • 是的。我知道问题出在 CreditCardDetail 但 xml 结构更改不受我们控制。对于问题解释,我已经表明它已从 xml 文件中读取,但我们将其作为 xml 响应从调用客户端 soap api 中获取。在我们开始获取 CreditCardDetail 元素之前,我读取对数据集的 xml 响应然后使用数据表存储到 sql server 的代码工作正常。我是 c# 编程的新手,所以在这一点上我有点吃惊。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多