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
)。
我想明白了。仍然不相信这是"正确"的方法,但现在是:
MemoryStream s = new MemoryStream();
using (TextWriter b = new StreamWriter(s, Encoding.UTF8))
doc.Save(b);
String r = Encoding.UTF8.GetString(s.ToArray());
这将产生一个正确编码和正确声明的XML字符串。