相关疑难解决方法(0)

强制XDocument使用UTF-8编码写入String

我希望能够使用声明和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)

c# xml utf-8 linq-to-xml

36
推荐指数
1
解决办法
4万
查看次数

标签 统计

c# ×1

linq-to-xml ×1

utf-8 ×1

xml ×1