Как получить значение в разделе XML, и если нет, установить значение как ноль? - PullRequest
1 голос
/ 28 февраля 2011

У меня есть 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 значение.Есть ли способ указать, если для Effect нет секции Options, значение должно быть собрано как нулевое?

Тип Effect имеет конструктор, подобный этому:

new Effect (EffectType type, EffectOptions options)

так что просто хотите передать ноль во второй параметр, если нет секции Options.

1 Ответ

2 голосов
/ 28 февраля 2011

Просто используйте Any():

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