将XML文件转换为数据表C#

时间:2017-02-20 14:13:00

标签: c# xml datatable

我有以下xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<font id="plejd">
<glyph unicode="&#x100;" glyph-name="area_add" d="string" />
<glyph unicode="&#x101;" glyph-name="area_bathroom" d="string2" />
<glyph unicode="&#x102;" glyph-name="area_cabin" d="string3" />
<glyph unicode="&#x103;" glyph-name="area_cinema" d="string4" />
</font>

我想遍历每个项目并添加unicode,glyph-name&amp; d到数据表。

我有以下代码,但我不知道如何获取信息。

XDocument xdoc = XDocument.Load("PivotIcons.xml");
        foreach (XElement element in xdoc.Descendants())
        {

        }

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

类似的东西:

        XElement root = XElement.Load("PivotIcons.xml");
        foreach (XElement element in root.Descendants("glyph"))
        {
            string unicode = element.Attribute("unicode").Value;
            string glyphname = element.Attribute("glyph-name").Value;
            string d = element.Attribute("d").Value;

            // save to database...?
        }

会做这个工作。您需要将unicode格式化为您计划如何将其存储在数据库中!

答案 1 :(得分:0)

试试这个..

 public static void XMLToDataTable()
    {
        XDocument doc = XDocument.Load(@"D:\\Sample.xml");

        System.Data.DataTable dt = new System.Data.DataTable();

        dt.Columns.Add("unicode");
        dt.Columns.Add("glyph_name");
        dt.Columns.Add("d");
        string[] arr = new string[3];

        var dr = from n in doc.Descendants("glyph")
                 select new string[]{ 
                     arr[0] = n.Attribute("unicode").Value,
                     arr[1] = n.Attribute("glyph-name").Value,
                     arr[2] = n.Attribute("d").Value
                 };

        foreach (var item in dr)
        {
            dt.Rows.Add(item[0],item[1],item[2]);
        }
    }