我有类似于下面的 XML 的东西。我在 C# 中使用 Linq 解析它,它运行良好,直到我们得到一个没有type
.
<productList>
<product>
<type>
<colour>red</colour>
</type>
<name>First</name>
</product>
<product>
<name>Second</name>
</product>
</productList>
我正在尝试访问colour
下的元素type
,但是当代码到达product
没有该type
元素的 a 时,我收到“对象引用未设置为对象的实例”错误。
这是我目前用来访问它的代码。我试图解决这个问题的尝试让事情变得有点复杂。
productColour = products.Element("type").Descendants().FirstOrDefault() == null ? string.Empty : products.Element("type").Descendants().FirstOrDefault().Value,
我知道colour
元素总是第一个在下面type
,所以我可以使用.FirstOrDefault()
,但使用这段代码我仍然得到同样的错误。
谁能指出我正确的方向?我也尝试过强制转换为字符串,并且还有:?? " "
最后,到目前为止都无济于事。
编辑:感谢@anthony-pegram,看起来问题是我总是试图抓住后代,即使父元素不存在。所以看起来我需要在抓住孩子之前检查父元素 - 谁能指出我的方向?