2014-09-19 103 views
2

我有一個XML文件看起來像這樣:的selectNodes只得到第一個節點

<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<row> 
<Alert>warning</Alert> 
<Alert2>warning</Alert2> 
</row> 
</data> 

當我使用下面的代碼,我只得到了「警報」 -node。但我也不會「Alert2」(以此類推......)。我在這裏錯過了什麼?

using (XmlReader reader = cmd.ExecuteXmlReader()) 
      { 
       string xmlFile = ""; 
       while (reader.Read()) 
       { 
        xmlFile = reader.ReadOuterXml(); 
       } 

       var doc = new XmlDocument(); 
       doc.LoadXml(xmlFile); 
       var nodes = doc.SelectNodes("data/row"); 

       if (nodes == null) return columns; 
       var i = 0; 
       foreach (XmlNode node in nodes) 
       { 
        var column = node.ChildNodes[i].Name; 
        columns.Add(column); 
        i++; 
       } 
       return columns; 
      } 

回答

3

你的循環更改爲等價的:

var doc = new XmlDocument(); 
    doc.LoadXml(xml); 
    var nodes = doc.SelectNodes("data/row"); 

    int i = 0; 
    foreach (XmlNode node in nodes) 
    { 
     foreach (var child in node.ChildNodes) 
     { 
      var element = (XmlElement)child; 
      string nodeName = element.Name; 
      string value = element.InnerXml; 
      i++; 
     } 

    } 
相關問題