ENUM的XML序列化为空

时间:2011-07-04 09:57:31

标签: c# xml serialization enums xmlserializer

这是由XSD生成的枚举

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/Utenza.xsd")]
public enum MeterType {

    /// <remarks/>
    [System.Xml.Serialization.XmlEnumAttribute("a diffalco")]
    adiffalco,

    /// <remarks/>
    [System.Xml.Serialization.XmlEnumAttribute("con diffalco")]
    condiffalco,

    /// <remarks/>
    [System.Xml.Serialization.XmlEnumAttribute("di riserva")]
    diriserva,
}

和..这是我用来序列化的代码

String XmlString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(Tipo);

XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);           
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlString = UTF8ByteArrayToString(memoryStream.ToArray());

XML输出不包含表示枚举值的属性。 有人可以帮忙吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

您的问题帮助我解决了将近十年后的枚举所遇到的问题。您现在可能已经找到答案了。您需要具有NULL的枚举值,该值将是枚举(0)中的第一个值。然后使用:

[System.Xml.Serialization.XmlEnumAttribute("")] 

作为用于“ Null”枚举值的属性。当XmlSerialzer遇到需要将tp映射到枚举的XML元素的值为null或空字符串时,就需要这样做。

我希望这个答案对遇到类似问题的人有帮助。