0

我需要反序列化/序列化如下所示的 XML:

<color>
    <green/>
</color>

<green/>可能在哪里<red/><blue/>等等 - 非常大(但有限)的集合。

我想在我的代码中将其描述为简单的枚举:

enum ColorName
{
    [XmlEnum("red")]
    Red,
    [XmlEnum("green")]
    Green,
    [XmlEnum("blue")]
    Blue,

    ...
    etc.
}

但是,如果我这样写我的对象模型:

class Color
{
    [XmlElement("name")]
    public ColorName ColorName;
}

class Something
{
    [XmlElement("color")]
    public Color Color;
}

enum 作为值而不是元素名称进入 XML:

<color>
    <name>green</name>
</color>

有没有办法将枚举值写入 XML 元素名称(请参阅第一个 XML 片段 - 这是目标),而不是 XML 元素值,而无需将所有值(这是一个非常大的集合)重新键入为空类名称,还是求助于自定义序列化(我想避免它,因为序列化的类包含很多其他成员,默认情况下它们是完全序列化的)?

(我无法更改架构,它是第三方的)。

4

1 回答 1

0

不,简单地用[Xml*]属性装饰你的类是不支持的。您将不得不自己实施IXmlSerializableSomething自己做。请注意,在大多数情况下,您不必费心使用该GetSchema方法。实施ReadXml并且WriteXml很好。

于 2013-11-14T20:04:44.153 回答