Serializing an XDocument

本文关键字:XDocument an Serializing | 更新日期: 2023-09-27 18:25:50

我正在尝试快速正确地序列化XDocument对象。我试过几种方法,但最后一种(在这里找到的)似乎简单明了:

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)。

Serializing an XDocument

我想明白了。仍然不相信这是"正确"的方法,但现在是:

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

这将产生一个正确编码和正确声明的XML字符串。