如何使用XElement保存属性?

时间:2011-03-02 00:10:32

标签: c# .net casting xmlreader xelement

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

我正在尝试向名为Option的最后一行中的Type添加一个属性,其值包含类型为o的{​​{1}}类型但是我希望存储Object值,然后在解析xml文件时使用它,从中将字符串值转换回该值。

所以我也不确定如何在代码中进行程序化转换,其中转换将如下所示:

o.GetType()

但最后object option = (object) (typeStoredInXml) o; 值将是实际类型,即使它看起来像一个对象,但不是字符串,除非实际类型是字符串。

编辑:这是xml的样子:

option

type属性可能看起来不一样,我不确定o.GetType()是否看起来像是一个int,但它只是给出一个想法。

1 个答案:

答案 0 :(得分: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。