【发布时间】:2012-09-23 06:52:58
【问题描述】:
当我使用 LINQ 将 XML 文件解析为自定义对象时,我试图防止出现 NULL 值。
我在Scott Gu's blog 上找到了一个很好的解决方案,但由于某种原因,它不适用于我的整数。我想我使用了相同的语法,但似乎我遗漏了一些东西。哦,由于某种原因,它在节点不为空时起作用。
以下是我的代码摘录。
List<GrantAgresso> lsResult = (from g in xml.Element("root").Elements("Elementname")
select new GrantAgresso()
{
Year = (int?)g.Element("yearnode") ?? 0,
Subdomain = (string)g.Element("domainnode") ?? ""
}).ToList();
错误信息是:
输入字符串的格式不正确。
如果有人知道我做错了什么,请帮忙:)
编辑:一段 XML(奇怪的名字,但不是自愿选择)
<Agresso>
<AgressoQE>
<r3dim_value>2012</r3dim_value>
<r0r0r0dim_value>L5</r0r0r0dim_value>
<r7_x0023_province_x0023_69_x0023_V005>0</r7_x0023_province_x0023_69_x0023_V005>
<r7_x0023_postal_code_x0023_68_x0023_V004 />
<r7_x0023_country_x0023_67_x0023_V003>1004</r7_x0023_country_x0023_67_x0023_V003>
<r7_x0023_communitydistrict_x0023_70_x0023_V006>0</r7_x0023_communitydistrict_x0023_70_x0023_V006>
</AgressoQE>
</Agresso>
【问题讨论】:
-
我赌的是不正确的 xml 语法。你能显示xml内容吗?合并运算符是正确的,如果不是,它不会抛出此错误(它与字符串无关)
-
是
Year或Subdomain赋值会引发异常吗?您可以尝试评论其中一行以查看异常是否消失。 -
我在帖子中添加了 xml 的一个节点。触发异常的是空节点(以 r7_ 开头)。我用来检索它的代码与我一年使用的代码相同。
标签: c# xml linq null-coalescing-operator