为什么运行此代码...

XmlDocument doc = new XmlDocument();

string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
                   <BaaBaa>
                        <BlackSheep HaveYouAny=""Wool"" />
                   </BaaBaa>";

doc.LoadXml(xml);

XmlNodeList nodes = doc.SelectNodes("//BaaBaa");

foreach (XmlElement element in nodes)
{
    Console.WriteLine(element.InnerXml);

    XmlAttributeCollection attributes = element.Attributes;
    Console.WriteLine(attributes.Count);
}


在命令提示符下产生以下输出?

<BlackSheep HaveYouAny="Wool" />
0


也就是说,attributes.Count不应该返回1吗?

最佳答案

当使用“ // BaaBaa”调用SelectNodes时,它将返回“ BaaBaa”的所有元素。

从您自己的文档中可以看到,BaaBaa没有属性,它是具有唯一属性“ HaveYouAny”的“ BlackSheep”元素。

如果要获取子元素的属性计数,则必须在遍历节点时从所在的节点导航到该属性。

07-25 20:59