【问题标题】:transforming xml to data table将xml转换为数据表
【发布时间】:2016-02-19 20:37:13
【问题描述】:

我在这个模板中有一个 XML 文件

<tests>
   <x>
      <a></a>
      <b></b>
      <c></c>
   </x>
   <y>
      <a></a>
      <b></b>
      <c></c>
   </y>
   <z>
      <a></a>
      <b></b>
      <c></c>
  </z>
</tests>

我只想将 &lt;x&gt;...&lt;/x&gt; 中的所有内容转换为 DataTable。

我该怎么做?

【问题讨论】:

  • 您需要向我们展示您尝试过的内容或搜索过的内容,以引导您进入正题。

标签: c# xml datatables


【解决方案1】:

这是一种方式:

public DataTable CreateDataTable(string fileName)
{
    XElement xml = XElement.Load(fileName);

    var tempRows = from x in xml.Descendants("x")                       
                   select new
                   {
                       A = (string)x.Element("a"),
                       B = (string)x.Element("b"),
                       C = (string)x.Element("c")
                   };

    DataTable dt = new DataTable();
    dt.Columns.Add("a", typeof(string));
    dt.Columns.Add("b", typeof(string));
    dt.Columns.Add("c", typeof(string));            

    foreach (var tempRow in tempRows)
    {
        dt.Rows.Add(tempRow.A, tempRow.B, tempRow.C);
    }

    return dt;
}

【讨论】:

  • 谢谢!但是如果我的 xml 看起来像这样:&lt;x&gt; &lt;a&gt; &lt;d&gt;&lt;/d&gt; &lt;e&gt;&lt;/e&gt; &lt;/a&gt; &lt;b&gt;&lt;/b&gt; &lt;c&gt;&lt;/c&gt; &lt;/x&gt;
【解决方案2】:

纯粹的 javascript 是从服务器获取 XML 并对其进行解析:

var xmlData = "<tests><x><a>1</a><b>1</b><c>1</c></x><y><a>2</a><b>2</b><c>2</c></y><z><a>3</a><b>3</b><c>3</c></z></tests>";
$(function(){
    var example = $("#example").DataTable({
        columns:[{
            title: "Row A"
        },{
            title: "Row B"
        },{
            title: "Row C"
        }]
    });
    $.ajax({
        type: "POST",
        dataType: "xml",
        url: "/echo/xml/",
        data : { 
            "xml": xmlData,
            "delay": 1
        },
        success: function(xml) {
            $(xml).find("tests").children().each(function(k, v){
                var abc = [];
                abc.push($(v).children("a").text())
                abc.push($(v).children("b").text())
                abc.push($(v).children("c").text())
                example.row.add(abc);
            })
            example.draw();
        }  
    });    
});

工作示例here 尽管请注意:我冒昧地用数据填充您的 XML。

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 2011-07-03
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多