c# – 如何在不转义字符的情况下保存XML?
在我的C#app中,XML数据可能包含已经预处理的任意元素文本,因此(除其他外)非法字符已转换为其转义(xml字符实体编码)形式.
示例:< myElement>此&该< / myElement>已被转换为< myElement>这个& amp;该< / myElement取代. 问题是,当我使用XmlTextWriter保存文件时,’&’正在重新转发到< myElement>这个& amp; amp;该< / myElement取代.我不想要额外的& amp; amp;在字符串中. 另一个例子:< myElement>?bullet< / myElement>,我的处理将其更改为< myElement>•子弹< / myElement>保存到< myElement>& amp;#8226;子弹< / myElement取代.我希望输出到文件的是< myElement>•子弹< / myElement>形成. 我已经尝试了各种XmlWriters等的各种选项,但似乎无法获得原始字符串以正确输出.为什么XML解析器无法识别&不重写已经有效的逃脱? 更新:更多的调试,我发现元素文本字符串(实际上所有字符串包括元素标签,名称,属性等)只要被内部类复制到.net xml对象数据(CDATA是一个例外)就会被编码在System.Xml下调用XmlCharType.所以这个问题与XmlWriters无关.看起来解决问题的最佳方法是在输出数据时取消数据,方法是: string output = System.Net.WebUtility.HtmlDecode(xmlDoc.OuterXml); 哪个可能会演变成自定义XmlWriter以保留格式等. 感谢所有有用的建议. 解决方法
而是调用xmlwriter.writeraw.但要检查字符是否有效是不够智能的.因此,您必须自己检查否则将生成无效的xml.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |