我正在尝试快速准确地序列化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
已设置)。
答案 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字符串。