2017-10-17 168 views
0

我正在研究XML并在asp.net网格中获取其值。我的XML具有相同的列名和不同的值,所以每次只读一条记录。有人帮忙吗?具有相同标记名称和不同值的xml文件

下面是我的XML结构

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

这里,如何发布代码您检索或生成此xml –

+0

xmldoc.Load(“file.xml”); XmlNodeList nodeList = xmldoc.SelectNodes(“/ ind/name”); foreach(节点列表中的XmlNode节点) DataRow dtrow = dt.NewRow(); dtrow [“Name1”] = node [“name”] [value] .InnerText; dtrow [“Name2”] = node [“name”] [value] .InnerText; dtrow [“Name3”] =节点[“名称”] [值] .InnerText; }即时通讯使用这种类型的方法 – Ussama

+0

您可以修改您的问题并添加您的格式化代码。如果你加载到DataTable中,我修改了我的答案以添加到数据表。 –

回答

0

您可以使用LINQ到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元素到DataT能够。

修改后的版本,以填补一个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"]); 

输出 名1:A1,名称2:A2,NAME3:A3

Demo Example online

相关问题