Selectnodes仅获取第一个节点

时间:2014-09-19 15:33:11

标签: c# xml xmldocument

我有一个如下所示的XML文件:

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

当我使用下面的代码时,我只得到“警报” - 节点。但我也不会“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;
            }

1 个答案:

答案 0 :(得分: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++;
        }

    }