2011-03-02 43 views
0
new XElement ("EffectFile", 
    new XElement ("Effects", this.Effects.Select (
     e => new XElement ("Options", e.Options.Select (
      o => new XElement ("Option", o)))))) 

我想添加到Option的屬性,最後叫Type行,與包含的o這是Object類型的類型的值,但我想存儲o.GetType()值,然後後來在使用它解析xml文件,字符串值將從該文件轉換回該值。如何使用XElement保存屬性?

所以我也不知道我怎麼能做到在代碼的編程投在投看起來像這樣:

object option = (object) (typeStoredInXml) o; 

但到底option值將是實際的類型,即使它看起來像一個對象,但不是一個字符串,除非實際類型是字符串。

編輯:這是XML應該如何看起來像:

<Effect> 
    <Type>Blur</Type> 
    <Options> 
    <Option Type="int">88</Option> 
    </Options> 
</Effect> 

type屬性可以看看不同的,我不知道如果o.GetType()會是什麼樣子,如果是一個整數,但這僅僅是一個想法。

回答

2

這是你要找的東西嗎?

new XElement ("EffectFile", 
    new XElement ("Effects", this.Effects.Select (
     e => new XElement ("Options", e.Options.Select (
      o => new XElement ("Option", o, 
       new XAttribute("Type", o.GetType())))))) 

很明顯,這隻有在o不爲空時纔有效。

順便說一句,你可能想看看XML序列化,因爲它看起來基本上就是你想要的。有些庫是專門爲幫助這類事情而構建的,因此您不必手動發佈和解析XML。

+0

謝謝你,但你還在儲存'o'嗎?我想存儲o和type,但是type是一個屬性。 – 2011-03-02 00:20:13

+1

@Joan Venge:你想要什麼樣的最終XML? 'o'看起來會有很大的不同,這取決於它是'int'還是'Customer'。 – StriplingWarrior 2011-03-02 00:21:48

+0

謝謝我編輯了問題以顯示xml。對不起'o'是選項的值,所以在這種情況下是88。 – 2011-03-02 00:25:03