如何获取xml部分中的值,如果不存在,则将值设置为null?

时间:2011-02-28 18:41:20

标签: c# .net linq xmlreader xelement

我有一个像这样的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<EffectFile>
  <Effects>
    <Effect>
      <Type>Blur</Type>
    </Effect>
    <Effect>
      <Type>Sharpen</Type>
    </Effect>
    <Effect>
      <Type>Zoom</Type>
      <Options>
        <Option>88</Option>
        <Option>"miles"</Option>
      </Options>
    </Effect>
  </Effects>
</EffectFile>

我正在解析它:

xElement.Elements ( "Effects" ).Elements ( "Effect" ).Select (
    e => new Effect (
        ( EffectType ) Enum.Parse ( typeof ( EffectType ), ( string ) e.Elements ( "Type" ).FirstOrDefault ( ) ),
        e.Elements ( "Options" ).Select ( p => ( object ) p.Elements ( "Option" ) ) ) );

但是使用此版本,每个Effect至少会获得一个空的EffectOptions值。有没有办法指定Options是否没有Effect部分,应该将该值收集为空?

Effect类型有一个像这样的构造函数:

new Effect (EffectType type, EffectOptions options)

所以如果没有Options部分,只想将null传递给第二个参数。

1 个答案:

答案 0 :(得分:2)

只需使用Any()

e.Elements("Options").Any() 
           ? e.Elements("Options").Select (p => (object) p.Elements("Option")) 
           : null )