Csharp/C#教程:尽管在UTF-8中编写XML,但仍在XmlElement中转义Unicode字符串分享


尽管在UTF-8中编写XML,但仍在XmlElement中转义Unicode字符串

对于给定的XmlElement ,我需要能够将内部文本设置为Unicode字符串的转义版本,尽管文档最终以UTF-8编码。 有没有办法实现这个目标?

这是代码的简单版本:

 const string text = "ñ"; var document = new XmlDocument {PreserveWhitespace = true}; var root = document.CreateElement("root"); root.InnerXml = text; document.AppendChild(root); var settings = new XmlWriterSettings {Encoding = Encoding.UTF8, OmitXmlDeclaration = true}; using (var stream = new FileStream("out.xml", FileMode.Create)) using (var writer = XmlWriter.Create(stream, settings)) document.WriteTo(writer); 

预期:

 ñ 

实际:

 ñ 

直接使用XmlWriter并调用WriteRaw(text)可以正常工作,但我只能访问XmlDocument ,并且稍后会进行序列化。 在XmlElementInnerText&转义为& 正如预期的那样,设置Value会抛出exception。

是否有某种方法可以将XmlElement的内部文本设置为转义的ASCII文本,而不管最终使用的编码是什么? 我觉得我必须遗漏一些明显的东西,否则就是不可能。

如果您要求XmlWriter生成ASCII输出,它应该为您提供所有非ASCII内容的字符引用。

 var settings = new XmlWriterSettings {Encoding = Encoding.ASCII, OmitXmlDeclaration = true}; 

输出仍然是有效的UTF-8,因为ASCII是UTF-8的子集。

上述就是C#学习教程:尽管在UTF-8中编写XML,但仍在XmlElement中转义Unicode字符串分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1029751.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐