尽管在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
,并且稍后会进行序列化。 在XmlElement
, InnerText
将&
转义为&
正如预期的那样,设置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