【发布时间】:2017-09-07 19:44:04
【问题描述】:
我正在获取.resx 文件中许多元素的值。在某些data 元素上,<comment> 子元素不存在,所以当我运行以下命令时,我会得到一个NullReferenceException。
foreach (var node in XDocument.Load(filePath).DescendantNodes())
{
var element = node as XElement;
if (element?.Name == "data")
{
values.Add(new ResxString
{
LineKey = element.Attribute("name").Value,
LineValue = element.Value.Trim(),
LineComment = element.Element("comment").Value //fails here
});
}
}
我尝试了以下方法:
LineComment = element.Element("comment").Value != null ?
element.Element("comment").Value : ""
还有:
LineComment = element.Element("comment").Value == null ?
"" : element.Element("comment").Value
但是我仍然收到错误消息?任何帮助表示赞赏。
【问题讨论】:
-
注意——问题似乎是你在做 .Value on "null" aka null.Value
-
如何使用空传播运算符 (
?.),就像您在if条件中所做的那样...element.Element("comment")?.Value。或者只是LineComment = element.Element("comment") == null ? "" : element.Element("comment").Value;
标签: c# linq linq-to-xml resx xelement