C# 循环遍历XML文档

C# 循环遍历XML文档,c#,xml,C#,Xml,我的方法: if (File.Exists( @"C:\config.xml")) { System.Xml.XmlDocument xd = new System.Xml.XmlDocument(); xd.Load( @"C:\config.xml"); System.Xml.XmlElement root = xd.DocumentElement; System.Xml.XmlNodeList nl = root.SelectNodes("/conf

我的方法:


if (File.Exists( @"C:\config.xml"))
   {
    System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
    xd.Load( @"C:\config.xml");
    System.Xml.XmlElement root = xd.DocumentElement;
    System.Xml.XmlNodeList nl = root.SelectNodes("/config");
    foreach (System.Xml.XmlNode xnode in nl)
    {
        string name = xnode.Name;
        string value = xnode.InnerText;
        string nv = name + "|" + value;
        Send(nv);
        }
我的Xml文档

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<config>
<bla>D</bla>
<def>300</def>
<ttOUT>34000</ttOUT>
<num>3800</num>
<pw>help</pw>
<err>1</err>
....and so on
</config>

D
300
34000
3800
帮助
1.
等等
现在,我的方法返回前2个值,而不返回其他值。
我做错了什么…

使用
System.Xml
名称空间来避免长类型限定,例如

    using System.Xml;
那就试试这样的

    XmlNodeList nl = xd.SelectNodes("config");
    XmlNode root = nl[0];

    foreach (XmlNode xnode in root.ChildNodes)
    {
        string name = xnode.Name;
        string value = xnode.InnerText;
        string nv = name + "|" + value;
        Send(nv);
    }
我相信你的方法有问题

a) 我不认为
SelectNodes
应该使用
/config
参数,而是应该使用
config


b) 选择第一个根节点(并且.Net中只有-XML文件必须有一个且只有一个根节点)后,您需要迭代根节点的
ChildNodes

根是标记,所以我根本不理解root.SelectNodes(“/config”)应该如何工作。改为使用root.Childnodes。

您说它返回前两个,您的意思是
?您可能指向了一个未保存的测试文件……当您解释原始代码的错误、导致所述行为的原因以及您如何修复它时,这会更有帮助。抛开一段代码并不能得到比这个问题更高质量的答案。@Cody说得好,同意。我只是想尽快得到一些东西,因为这个网站上有一些速度很快的人:)我会添加一个解释。@Josefvz真棒:)谢谢你的提示