【发布时间】:2010-10-08 13:03:37
【问题描述】:
我在序列化枚举值时遇到问题。
代码如下:
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public class REQUEST
{
[System.Xml.Serialization.XmlAttributeAttribute()]
public string ID;
[System.Xml.Serialization.XmlAttributeAttribute()]
public REQUESTTypetype Type;
}
public enum REQUESTTypetype
{
One,
Two,
Three,
Four,
}
...
REQUEST request = new REQUEST();
request.ID = "1234";
request.Type = REQUESTTypetype.One;
XmlDocument doc = new XmlDocument();
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
XmlSerializer xs = new XmlSerializer(typeof(REQUEST));
xs.Serialize(sw, request_group);
ms.Position = 0;
doc.Load(ms);
TestWriteXml(doc, @"C:\xml_test.xml");
结果是:
<?xml version="1.0" encoding="utf-8" ?>
<REQUEST ID="1234" />
为什么枚举没有序列化?我使用 .NET Framework 2.0。
谢谢。
【问题讨论】:
-
我猜您的代码中缺少某些内容,您正在序列化“xs.Serialize(sw, request_group)”,但您设置了“请求”的值。 request_group的定义是什么,有没有设置类型?
-
应该是“request”,我只是稍微改了一下名字。
-
TestWriteXml 函数的代码是什么?
-
public static void TestWriteXml(XmlDocument xml, string filename) { FileStream fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fileStream); sw.WriteLine(xml.InnerXml); sw.Flush(); sw.Close(); }
-
VladV,我尝试了 [System.Xml.Serialization.XmlElement()] 而不是 [System.Xml.Serialization.XmlAttributeAttribute()] 但没有结果。
标签: c# enums xml-serialization