gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:39 26 4
gpt4 key购买 nike

对于给定的 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);

预期:

<root>&#xF1;</root>

实际:

<root>ñ</root>

直接使用 XmlWriter 并调用 WriteRaw(text) 可以,但我只能访问 XmlDocument,序列化稍后发生.在 XmlElement 上,InnerText& 转义为 &,正如预期的那样,并设置 Value 抛出异常。

是否有某种方法可以将 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 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com