- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有以下代码:
var doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(xmlDeclaration);
XmlElement root = doc.CreateElement("myRoot");
doc.AppendChild(root);
root.InnerText = "myInnerText";
StringWriter sw = new StringWriter();
doc.Save(sw);
Console.WriteLine(sw.ToString());
Console.WriteLine();
MemoryStream ms = new MemoryStream();
doc.Save(ms);
Console.WriteLine(Encoding.ASCII.GetString(ms.ToArray()));
这是输出:
<?xml version="1.0" encoding="utf-16"?>
<myRoot>myInnerText</myRoot>
???<?xml version="1.0" encoding="UTF-8"?>
<myRoot>myInnerText</myRoot>
基本上它所做的是制作一个 xml 文件,并将编码设置为 utf8,但是当它把它保存到 stringwriter 时,它会忽略我的编码并使用 utf16。但是,当使用内存流时,它使用 utf8(带有额外的 BOM 字符)
这是为什么?为什么它不遵守我的 utf-8 显式编码设置?
非常感谢
最佳答案
因为您所做的只是设置一个表示它是 UTF-8 的 XML 元素,所以您实际上并没有将其保存为 UTF-8。您需要将输出流设置为使用 UTF-8,如下所示:
var doc = new XmlDocument();
XmlElement root = doc.CreateElement("myRoot");
doc.AppendChild(root);
root.InnerText = "myInnerText";
using(TextWriter sw = new StreamWriter("C:\\output.txt", false, Encoding.UTF8)) //Set encoding
{
doc.Save(sw);
}
完成后,您甚至不必添加 XML 声明。它自己想出来。如果要将其保存到 MemoryStream,请使用包装 MemoryStream 的 StreamWriter。
关于c# - 保存 XmlDocument 时,它会忽略 XmlDeclaration (UTF8) 中的编码并使用 UTF16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074648/
我想在 c# .net 2 或 3 中使用 XmlDocument/XmlDeclaration 类时创建自定义 XmlDeclaration。 这是我想要的输出(这是第三方应用程序的预期输出):
本文整理了Java中org.jsoup.nodes.XmlDeclaration.getWholeDeclaration()方法的一些代码示例,展示了XmlDeclaration.getWholeDe
本文整理了Java中org.jsoup.nodes.XmlDeclaration.()方法的一些代码示例,展示了XmlDeclaration.()的具体用法。这些代码示例主要来源于Github/Sta
检查 XmlDeclaration 节点的 XmlDocument 的更有效方法是什么? 最佳答案 检查它有一个: bool hasDec = doc.FirstChild.NodeType == X
我有以下代码: var doc = new XmlDocument(); XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0",
最近,当我使用 JAXB 时,我必须从生成的文件中删除 xml header 。我的意思是,我必须删除 xml 文件中的第一行,如下所示: 几分钟后,我在互联网上发现,我可以使用以下解决方案之一:
我正在编写一些代码来读取包含 XML 声明的 XML 片段,例如并解析编码。来自 MSDN ,我应该可以这样做: var nt = new NameTable(); var mgr = new Xml
我是一名优秀的程序员,十分优秀!