2012-01-05 57 views
2

我想序列化一个HashSet的IXmlSerializable对象,是HashSet的xml可序列化的吗?是HashSet <T> Xml可串行化?

在我的情况下,我有类User和一个名为Users的HashSet。我可以避免为序列化目的创建用户类吗?

我喜欢将哈希集作为参数传递给xml序列化程序。

如果将xml作为http响应获取,可能会反序列化xml吗?我正在考虑使用MemoryStream,还有其他可能吗?

+0

它有'Serializable'属性,所以我会说是。 http://msdn.microsoft.com/en-us/library/bb359438.aspx – 2012-01-05 16:07:00

+1

@JamesMichaelHare,Serializable属性与XML序列化无关。 – 2012-01-05 16:09:01

+1

这些看起来都是非常简单的测试...我错过了什么吗? – 2012-01-05 16:09:31

回答

8

是的,它可以序列化为XML。试试吧:

var set = new HashSet<string>(); 
set.Add("hello"); 
set.Add("world"); 

var xs = new XmlSerializer(typeof(HashSet<string>)); 
string xml; 
using (var writer = new StringWriter()) 
{ 
    xs.Serialize(writer, set); 
    xml = writer.ToString(); 
    Console.WriteLine(xml); 
} 

using (var reader = new StringReader(xml)) 
{ 
    var set2 = (HashSet<string>)xs.Deserialize(reader); 
    foreach(string s in set2) Console.WriteLine(s); 
} 
+0

非常感谢,只有一个问题:Deserialize方法如何理解它必须反序列化为HashSet而不是数组? – 2012-01-05 17:00:47

+1

@ Fire-Dragon-DoL,因为'XmlSerializer'是为'HashSet '类型创建的(这被指定为构造函数参数) – 2012-01-05 17:02:26

+0

啊!好的,非常感谢!没想过。 – 2012-01-05 22:18:59