1

我得到了一个包含可选元素的 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 : "" : ""

这感觉不太理想。我需要查询更多节点。

4

2 回答 2

2

我会使用Linq to Xml的XPath 扩展:

var description = (string)xdoc.XPathSelectElement("//show/text/description");

Value并在访问元素属性时使用转换为字符串以避免 NullReference 异常。

于 2013-07-09T09:47:51.203 回答
0

尝试使用(string)XElement转换而不是XElement.Value属性:

description = (string)show.Element("text").Element("description");

它将处理nulls。

于 2013-07-09T09:48:22.120 回答