c# - Selectnodes 只获取第一个节点

标签 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;
            }

最佳答案

将循环更改为等效的:

    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++;
        }

    }

关于c# - Selectnodes 只获取第一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937502/

相关文章:

c# - 是否有用于序列化自定义对象的 ODataSerializer?

c# - 如何更新 Exchange Web Api 中的联系人项目

C# LocalReport 更改文本框位置

xml - Oracle 10.1 和 11.2 使用相同的语句生成不同的 XML

c# - .NET XMLDocument 编码问题

c# - 将 XMLDocument 写入具有特定换行符的文件 (c#)

c# - 阻塞任务?

android - 形状和选择器不起作用

c# - 我可以将多个值传递给 C# 中的 Setter 吗?

java - 用 Java 创建文档