对XML的迭代返回Same Node Over&过度

时间:2015-06-09 16:38:46

标签: c# xml iteration xmlnode

以下内容应该生成所有消息的列表。

在实践中,我得到了一个rought长度的列表,但是一遍又一遍地使用相同的元素。

_messages = new List<Message>(); /*This does it*/ foreach (XmlNode n in thread.SelectNodes("//messages/message")) { _messages.Add(new Message(n)); } /*So does this*/ XmlNode msgItr = thread.SelectSingleNode("//messages").FirstChild; while (msgItr != null) { _messages.Add(new Message(msgItr)); msgItr = msgItr.NextSibling; } 是一个从发送给构造函数的XmlNode中填充的类。

A

1 个答案:

答案 0 :(得分:0)

您正在寻找错误的位置,只需使用//message即可。

这是两种枚举节点的方法,我使用的是LinqPad Dump()显示当前状态。

XDocument xd = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
    new XElement("Messages",   
         new XElement("Message", "Alpha"),
         new XElement("Message", "Beta"),
         new XElement("Message", "Omega")
  ));

  xd.Descendants("Message").Dump("XDocument");

  XmlDocument xmd = new XmlDocument();

  xmd.LoadXml(xd.ToString());

  xmd.SelectNodes("//Message")
     .Dump("XmlDocument");

以下是第一次和第二次转储的结果

enter image description here