【发布时间】:2013-11-28 00:29:47
【问题描述】:
我需要反序列化/序列化如下所示的 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;
}
枚举作为值而不是元素名称进入 XML:
<color>
<name>green</name>
</color>
有没有办法将枚举值写入 XML 元素名称(请参阅第一个 XML sn-p - 这就是目标),而不是 XML 元素值,而无需重新键入所有值(这是一个非常大的集合)作为空类名,或者诉诸自定义序列化(我想避免它,因为序列化的类包含很多其他成员,默认情况下是完美序列化的)?
(我无法更改架构,它是第三方的)。
【问题讨论】:
标签: c# xml xml-serialization xmlserializer