为什么这会抛出 NullReferenceException?
private void alterNodeValue(string xmlFile, string parent, string node, string newVal)
{
XDocument xml = XDocument.Load(this.dir + xmlFile);
if (xml.Element(parent).Element(node).Value != null)
{
xml.Element(parent).Element(node).Value = newVal;
}
else
{
xml.Element(parent).Add(new XElement(node, newVal));
}
xml.Save(dir + xmlFile);
}
为什么这会抛出
System.NullReferenceException 未被用户代码处理
此行上的
if (xml.Element(parent).Element(node).Value != null)
?
我猜这是因为 XML 节点不存在,但这就是 != null
应该检查的内容。我该如何解决这个问题?
我已经尝试了几件事,它们在非空检查期间的某个时刻都抛出了相同的异常。
感谢您的任何帮助。
private void alterNodeValue(string xmlFile, string parent, string node, string newVal)
{
XDocument xml = XDocument.Load(this.dir + xmlFile);
if (xml.Element(parent).Element(node).Value != null)
{
xml.Element(parent).Element(node).Value = newVal;
}
else
{
xml.Element(parent).Add(new XElement(node, newVal));
}
xml.Save(dir + xmlFile);
}
Why does this throw
System.NullReferenceException was unhandled by user code
on this line
if (xml.Element(parent).Element(node).Value != null)
?
I'm guessing it's because the XML node doesn't exist, but that's what the != null
is suppose to check for. How do I fix that?
I've tried several things and they ALL throw the same exception at some point during the not null check.
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您尝试从
xml.Element(parent)
的返回值访问的xml.Element(parent)
或Element(node)
为null
。像这样的重组将使您能够看到它是哪一个:
更新:
从您的评论来看,您似乎想要这样做:
Either
xml.Element(parent)
or theElement(node)
you are trying to access from the return value ofxml.Element(parent)
isnull
.Restructuring like this will enable to you see which one it is:
Update:
From your comment it looks like you want to do this:
几乎可以肯定,因为这会返回 null:
It is almost certainly because this returns null:
您需要检查是否:
在调用 .Value 之前。如果 Element(node) == null,则调用 .Value 将抛出空引用异常。
担
You need to check if:
Before you call .Value. If Element(node) == null, then the call to .Value will throw a null reference exception.
Dan
尝试将 if 语句更改为:
如果父元素中的节点为 null,则无法访问 null 对象的成员。
Try changing your if statement to this:
If the node in the parent element is null, you cannot access a member of a null object.
至少:
更好:
At least:
Better: