【发布时间】:2017-05-26 09:30:33
【问题描述】:
我正在运行这行代码,它完美地执行了我大约 800 条记录。创纪录的801,我被扔了
XMLPost.exe 中出现“System.NullReferenceException”类型的未处理异常
其他信息:对象引用未设置为对象的实例。
这是麻烦的代码行,我认为在?.Value 中添加它会解释空元素。
string sr12 = xml.Element("Parent").Element("Child1").Element("Child2").Element("Child3").Element("Child4").Element("Child5").Element("sr12")?.Value;
Console.WriteLine(sr12);
我应该对我的变量 sr12 进行哪些更改,以便它不会中断并且我的代码可以继续按预期执行?
编辑
XML 结构
<parent>
<one>
<two>
<three>
<sr12></sr12>
</three>
</two>
</one>
<ten>
<eleven>
<twelve>
<thirteen>
<sr12></sr12>
</thirteen>
</twelve>
</eleven>
</ten>
</parent>
我也试过这个语法
var result = (string) xml.Elements("Parent")
.Elements("ten")
.Elements("eleven")
.Elements("twelve")
.Elements("thirteen")
.Elements("homeaddress")
.SingleOrDefault();
这会产生错误
System.Core.dll 中出现“System.InvalidOperationException”类型的未处理异常
附加信息:序列包含多个元素
【问题讨论】:
-
如果任何其他 Element("xx") 元素为空怎么办?您只需检查 Element("sr12") 是否为空。
-
不要使用值:string sr12 = (string)xml.Element("Parent").Element("Child1").Element("Child2").Element("Child3")。 Element("Child4").Element("Child5").Element("sr12");
-
@Nebr - 我使用 ?.Value;对于我试图用我的 XML 返回的所有元素 - 这是唯一一个引发错误的元素
-
@Charles Mager 的回答将解决您的问题。您确定每次抛出错误是同一个字段还是不同的字段?同样,提供的代码将解决您的问题。