我有类似于下面第一个的代码
String xml1 =
@"<resultset>
<result>
<alamakota />
</result>
</resultset>";
String xml2 =
@"<resultset/>";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xml1);
XmlNodeList nodes1 = xDoc.SelectNodes("/resultset/result");
xDoc.LoadXml(xml2);
XmlNodeList nodes2 = xDoc.SelectNodes("/resultset/result");
Console.WriteLine(nodes1.Count);
Console.WriteLine(nodes2.Count);
我希望 WriteLine 方法给出 1 和 0 但并非总是如此。在正常程序运行中,它会给出双 0。在调试期间,当我在第二个 SelectNodes 上放置断点并检查 VS 中的 nodes1.Count 的值时,它最后给了我 1 和 0。似乎 SelectNodes 在 XmlNodeList 的第一次检查期间被评估,而不是在代码中的位置,例如下面的代码每次运行时都会给出 1 和 0
String xml1 =
@"<resultset>
<result>
<alamakota />
</result>
</resultset>";
String xml2 =
@"<resultset/>";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xml1);
XmlNodeList nodes1 = xDoc.SelectNodes("/resultset/result");
Int32 c1 = nodes1.Count;
xDoc.LoadXml(xml2);
XmlNodeList nodes2 = xDoc.SelectNodes("/resultset/result");
Console.WriteLine(nodes1.Count);
Console.WriteLine(nodes2.Count);
我知道我可以在第一个 SelectNodes 之后执行 xDoc = new XmlDocument() 并且它会像预期的那样工作,但我想知道它是否应该这样工作,因为我在 msdn 上找不到这种情况。如果是,那为什么?请指点我一些文档。