具有相同标记名称和不同值的xml文件

时间:2017-10-17 08:17:46

标签: c# asp.net xml

我正在处理XML并在asp.net网格中获取其值。我的xml具有相同的列名和不同的值,因此每次只读一条记录。有人帮忙吗?

以下是我的XML结构

    <ind>
        <Name>
            <value> a1 </value>
        </Name>
        <Name>
            <value> a2 </value>
        </Name>
        <Name>
            <value> a3 </value>
        </Name>
        <Name>
            <value> a4 </value>
        </Name>
    </ind>

1 个答案:

答案 0 :(得分:0)

您可以使用Linq To Xml

    XDocument xdoc = new XDocument();
    xdoc = XDocument.Parse(xml);

    var result = xdoc.Descendants("Name");

     foreach (XElement item in result) {
        Console.WriteLine("Name: " + item.Value);
     }

Demo Example online

<强>更新

从OP的注释中,将xml元素添加到DataTable。

用于填充DataTable的修改版本:

    XDocument xdoc = new XDocument();
    //xdoc= XDocument.Load("file.xml"); read from file
    xdoc = XDocument.Parse(xml); //read from string
    List<string> Names = new List<string>();
    var result = xdoc.Descendants("Name");

     foreach (var item in result)           
         Names.Add(item.Value);


    //create datatable

    DataTable dt = new DataTable("table");
    dt.Columns.Add("Name1", typeof(string));
    dt.Columns.Add("Name2", typeof(string));
    dt.Columns.Add("Name3", typeof(string));        

    //fill datatable
    DataRow dtrow = dt.NewRow(); 
    dtrow["Name1"]=Names[0];
    dtrow["Name2"]=Names[1];
    dtrow["Name3"]=Names[2];
    dt.Rows.Add(dtrow);

    //test datatable
     Console.WriteLine("Name1:{0}, Name2:{1},Name3:{2}", 
                      dt.Rows[0]["Name1"],
                      dt.Rows[0]["Name2"],
                      dt.Rows[0]["Name3"]);
  

输出   Name1:a1,Name2:a2,Name3:a3

Demo Example online