序列化XDocument

时间:2014-10-07 09:42:27

标签: c# linq serialization linq-to-xml

我正在尝试快速准确地序列化XDocument对象。我尝试了几件事,但最后一件事(发现它here)似乎简单明了:

StringBuilder b = new StringBuilder();
XmlWriterSettings sett = new XmlWriterSettings();
sett.Encoding = Encoding.UTF8;
XmlWriter xw = XmlWriter.Create(b, sett);
doc.Save(xw);
String r = b.ToString();

但是,最后,r只是一个空字符串。我错过了什么吗?为什么正确序列化XDocument对象如此困难?

令人沮丧的是,如果我调用doc.ToString(),我会得到一个很好的序列化XML字符串,而不会声明。如果我拨打doc.ToString(true),我会收到一个空字符串(doc.Declaration已设置)。

1 个答案:

答案 0 :(得分:0)

我明白了。仍然不相信这是“正确”的方式,但是这里有:

MemoryStream s = new MemoryStream();
using (TextWriter b = new StreamWriter(s, Encoding.UTF8))
    doc.Save(b);

String r = Encoding.UTF8.GetString(s.ToArray());

这会生成正确编码且正确声明的XML字符串。