我希望能够使用声明和UTF-8编码将XML写入String.这似乎很难完成.
我已经阅读了一些并尝试了一些流行的答案,但他们都有问题.我当前的代码正确输出为UTF-8但不保持XDocument的原始格式(即缩进/空格)!
有人可以提供一些建议吗?
XDocument xml = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), xelementXML);
MemoryStream ms = new MemoryStream();
using (XmlWriter xw = new XmlTextWriter(ms, Encoding.UTF8))
{
xml.Save(xw);
xw.Flush();
StreamReader sr = new StreamReader(ms);
ms.Seek(0, SeekOrigin.Begin);
String xmlString = sr.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
XML要求格式化与格式化格式相同,.ToString()即
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<node>blah</node>
</root>
Run Code Online (Sandbox Code Playgroud)
我现在看到的是
<?xml version="1.0" encoding="utf-8" standalone="yes"?><root><node>blah</node></root>
Run Code Online (Sandbox Code Playgroud)
更新
我已经设法通过添加XmlTextWriter设置让这个工作...虽然看起来非常笨重!
MemoryStream ms = new MemoryStream();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.ConformanceLevel = ConformanceLevel.Document;
settings.Indent = true;
using (XmlWriter xw …Run Code Online (Sandbox Code Playgroud)