在我的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.
标签:c,encode,xmlwriter 来源: https://codeday.me/bug/20190704/1377319.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。