以下内容应该生成所有消息的列表。
在实践中,我得到了一个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
答案 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");
以下是第一次和第二次转储的结果