我有一个像这样的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传递给第二个参数。
答案 0 :(得分:2)
只需使用Any()
:
e.Elements("Options").Any()
? e.Elements("Options").Select (p => (object) p.Elements("Option"))
: null )