我有这段代码:
XmlDocument doc = new XmlDocument();
doc.Load("file.xml");
XmlNodeList nodes = doc.SelectNodes("//myElement"); // Line 4
for (int i = 0; i < 5; i++) // Line 6
{
nodes[i].ParentNode.RemoveChild(nodes[i]);
}
doc.Save("output.xml");
如果我在第4行放置一个断点,程序运行正常。但是,如果我在超过该行的任何行(例如6)上放置断点,则会出现object reference not set to instance of object
错误,因为节点中只有一个项目。
每次运行程序时程序都会崩溃而没有断点。如果我在第4行放置一个断点,节点的正确计数为85
,一切正常。
即使我在第4行之前和之后Thread.Sleep(10000)
,程序仍会崩溃,因为它只找到1个节点。
有谁知道这是为什么?
答案 0 :(得分:0)
将代码更改为此,现在它可以完美地运行,断点与否,100%的时间:
XDocument doc = XDocument.Load("file.xml");
List<XElement> nodes = doc.Descendants("myElement").ToList();
for (int i = 0; i < 5; i++)
{
nodes[i].Remove();
}
doc.Save("output.xml");
不确定为什么SelectNodes
给我带来了麻烦,但这个解决方案似乎解决了所有问题。