加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在不转义字符的情况下保存XML?

发布时间:2020-12-15 17:23:44 所属栏目:百科 来源:网络整理
导读:在我的C#app中,XML数据可能包含已经预处理的任意元素文本,因此(除其他外)非法字符已转换为其转义(xml字符实体编码)形式. 示例: myElement此该 / myElement已被转换为 myElement这个 amp;该 / myElement取代. 问题是,当我使用XmlTextWriter保存文件时,’’正
在我的C#app中,XML数据可能包含已经预处理的任意元素文本,因此(除其他外)非法字符已转换为其转义(xml字符实体编码)形式.

示例:< myElement>此&该< / myElement>已被转换为< myElement>这个& amp;该< / myElement取代.

问题是,当我使用XmlTextWriter保存文件时,’&’正在重新转发到< myElement>这个& amp; amp;该< / myElement取代.我不想要额外的& amp; amp;在字符串中.

另一个例子:< myElement>?bullet< / myElement>,我的处理将其更改为< myElement>&#8226;子弹< / myElement>保存到< myElement>& amp;#8226;子弹< / myElement取代.我希望输出到文件的是< myElement>&#8226;子弹< / myElement>形成.

我已经尝试了各种XmlWriters等的各种选项,但似乎无法获得原始字符串以正确输出.为什么XML解析器无法识别&不重写已经有效的逃脱?

更新:更多的调试,我发现元素文本字符串(实际上所有字符串包括元素标签,名称,属性等)只要被内部类复制到.net xml对象数据(CDATA是一个例外)就会被编码在System.Xml下调用XmlCharType.所以这个问题与XmlWriters无关.看起来解决问题的最佳方法是在输出数据时取消数据,方法是:

string output = System.Net.WebUtility.HtmlDecode(xmlDoc.OuterXml);

哪个可能会演变成自定义XmlWriter以保留格式等.

感谢所有有用的建议.

解决方法

而是调用xmlwriter.writeraw.但要检查字符是否有效是不够智能的.因此,您必须自己检查否则将生成无效的xml.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读