2017-10-17 172 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

相關問題