【问题标题】:Load XML file into a Datatable [duplicate]将 XML 文件加载到数据表中 [重复]
【发布时间】:2015-03-20 05:06:06
【问题描述】:

我正在尝试将 xml 文件加载到数据表中,但我不知道从哪里开始。 Xml 文件具有帮助识别标题、行和列的标签。下面是一个示例:

<result>
  <info>
    <title>Summary By Employee: My Default</title>
    <sorted-by>Employee Name Ascending</sorted-by>
    <filtered-by>Employee: All; Dates: 01/11/2015-01/17/2015</filtered-by>
    <date>01/21/2015</date>
    <time>08:40a</time>
    <generated-by>Joe Doe </generated-by>
  </info>
<header>
<col>
  <label>Employee Id</label>
</col>
<col>
  <label>Employee Name</label>
</col>
<col>
  <label>Regular</label>
</col>
<col>
  <label>Overtime</label>
</col>
<col>
  <label>Premium</label>
</col>
<col>
</header>
<body>
<row>
  <col>022692</col>
  <col>James, Mitchel</col>
  <col>-</col>
  <col>-</col>
  <col>-</col>
</row>
<row>
  <col>022685</col>
  <col>Doe, Joe</col>
  <col>-</col>
  <col>-</col>
  <col>-</col>
</row>

关于如何实现这一点的任何想法?

感谢您的帮助。

【问题讨论】:

  • 首先检查 DataTable 和 DataSet 类的文档中是否有任何称为 LoadXXX 的方法。或者谷歌一下。

标签: c# xml wpf datatable


【解决方案1】:

试试下面的代码。您需要使用 System.Xml.Linq

           string xml = @"<result>
                              <info>
                                <title>Summary By Employee: My Default</title>
                                <sorted-by>Employee Name Ascending</sorted-by>
                                <filtered-by>Employee: All; Dates: 01/11/2015-01/17/2015</filtered-by>
                                <date>01/21/2015</date>
                                <time>08:40a</time>
                                <generated-by>Joe Doe </generated-by>
                              </info>
                            <header>
                            <col>
                              <label>Employee Id</label>
                            </col>
                            <col>
                              <label>Employee Name</label>
                            </col>
                            <col>
                              <label>Regular</label>
                            </col>
                            <col>
                              <label>Overtime</label>
                            </col>
                            <col>
                              <label>Premium</label>
                            </col> 
                            </header>
                            <body>
                            <row>
                              <col>022692</col>
                              <col>James, Mitchel</col>
                              <col>-</col>
                              <col>-</col>
                              <col>-</col>
                            </row>
                            <row>
                              <col>022685</col>
                              <col>Doe, Joe</col>
                              <col>-</col>
                              <col>-</col>
                              <col>-</col>
                            </row></body></result>";

        StringReader xmlReader= new StringReader(xml);
        DataSet ds= new DataSet();
        ds.ReadXml(xmlReader);

        DataTable result = ds.Tables[0];

以上将产生以下数据集...

【讨论】:

  • 你几乎是对的。对不起,我一定没有很好地解释自己。标头应该是员工 ID、员工姓名、常规、加班、溢价。 标签内的内容无关紧要。
  • 在这种情况下,您只需要更新您的 XML 源......就是这样 - 但要将 XML 数据加载到数据表/数据集中,请使用上述代码。
猜你喜欢
  • 1970-01-01
  • 2012-09-09
  • 2020-10-30
  • 1970-01-01
  • 2014-05-11
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多