Linq to XML: prevent NullReferenceExpception
本文关键字:prevent NullReferenceExpception XML to Linq | 更新日期: 2023-09-27 18:21:42
我得到了一个XML,它包含有时存在有时不存在的可选元素(..)。现在,这些可选元素本身也可能包含可选元素:
<show>
...
<text>
<description> desc </description>
</text>
...
</show>
<show>
<title>I'm a show without text</title>
</show>
<show>
<text>
<subtitle>I have a text-node but no description-node in it.</subtitle>
</text>
</show>
如果存在,我需要获取-node的值。像我现在这样处理它的更好方法是什么:
description = show.Element("text") != null ? show.Element("text").Element("description") != null? show.Element("text").Element("description").Value : "" : ""
这感觉不太好。。我需要查询更多的节点。
我会使用Linq到Xml:的XPath扩展
var description = (string)xdoc.XPathSelectElement("//show/text/description");
并且在访问元素的Value
属性时,使用对字符串的强制转换来避免NullReference异常。
尝试使用(string)XElement
转换而不是XElement.Value
属性:
description = (string)show.Element("text").Element("description");
它将处理null
s。