2011-03-02 42 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