XDocument保存&而不是仅仅 &
我正在使用 XDocument 来切换 xml 文档中的值。 在新值中,我需要使用字符“&” (与号) 但在 XDocument.save() 之后,xml 改为 &
!
我尝试使用编码和其他东西......没有任何效果
I am using XDocument to switch a value in an xml document.
In the new value I need to use the character '&' (ampersand)
but after XDocument.save() the xml has &
instead!
I tried using encoding and stuff… nothing worked
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
XDocument 正在做它应该做的事情。
&
是无效的 XML。 (这是一个未完成的角色/实体参考)XDocument is doing exactly what it's supposed to do.
&
is invalid XML. (it's an unfinished character/entity reference)&
在 XML 中表示“实体的开始”,因此如果您想要包含&
作为数据,则必须将其表示为实体 —& ;
(或在 CDATA 块中使用它)。您所描述的是正常行为,否则 XML 将会损坏。
&
means "Start of an entity" in XML so if you want to include an&
as data you must express it as an entity —&
(or use it in a CDATA block).What you describe is normal behaviour and the XML would break otherwise.
有两种选择。确保 XML 文档中所有内容的正确 XML 编码/解码。请记住,HTML 和 XML 编码/解码略有不同。
选项二是对 xml 中可能包含无效元素的任何内容使用 base64 编码。
There are two options. Either to ensure proper XML encoding/decoding of all your content in the XML document. Remember that HTML and XML encoding/decoding is slightly different.
Option two is to use base64 encoding on whatever content in the xml that might contain invalid elements.
您的输出文件 app.config 应该是 XML 文件吗?
如果是,则 &必须转义为
&
。如果不是,那么您应该使用文本输出方法而不是 xml 输出方法:使用
。PS:这个问题似乎与 如何为 ASP.net/C# 应用程序配置文件值中的值添加 & 符号
Is your output file app.config supposed to be an XML file?
If it is, then the & must be escaped as
&
.If it isn't, then you should be using the text output method instead of the xml output method: use
<xsl:output method='text'/>
.PS: this question appears to be a duplicate of How can I add an ampersand for a value in a ASP.net/C# app config file value