在将现有XML保存到新位置的同时,实体从内容中转义并替换为问号
在阅读时看到实体下面的按扣 - ( - 作为十六进制)但在保存到另一个位置后用问号替换。
阅读内部XML
读作内心文字
保存XML文件
编辑1 以下是我的代码
@Interceptor
@Loggable
@Priority(100)
public class FileLogger {}
编辑2 我的源文件如下所示。我需要保留实体
答案 0 :(得分:3)
此处的问题似乎是由XmlWriter
内部的特定XmlDocument
实现处理实体引用的编码。
如果您自己创建XmlWriter
,问题就会消失 - 不受支持的字符将被正确编码为实体引用。这个XmlWriter
是一个不同的(和更新的)实现,它设置一个> Screenshot to output <,它将字符编码为无法编码的字符的实体引用。根据文档中的备注,默认的回退机制是对问号进行编码。
var settings = new XmlWriterSettings
{
Indent = true,
Encoding = Encoding.GetEncoding("US-ASCII")
};
using (var writer = XmlWriter.Create(pathnew, settings))
{
document.Save(writer);
}
顺便说一句,我建议使用LINQ to XML XDocument
API,它比使用旧的笨拙XmlDocument
API更好。它的版本Save
也没有这个问题!