【问题标题】:How to escape quotes and apostrophes in XmlNode C#如何在 XmlNode C# 中转义引号和撇号
【发布时间】:2016-08-24 14:18:54
【问题描述】:

我必须为第三方创建一个 XML 文档,在他们的规范中,他们说他们需要 &" 和 ' 转​​义。当我设置 XMLNode 的 InnerText 时,我只会得到 和 & 自动转义。 " 和 ' 被单独留下。经过一番挖掘,我发现这些是有效的,这就是为什么它们没有逃脱。不幸的是,第三方需要这个。

我发现 System.Security.SecurityElement.Escape 会转义我需要的所有字符,但是当我设置 XMLNode 的 InnerText 时,它会转义我输入的转义字符中的与号,所以我得到 & quot;而不是"。 & 和其余部分之间没有空格,但我需要这样做才能在此处正确显示在文本中。我尝试设置 InnerXML 而不是 InnerText 但这似乎取消了我的字符串,所以它看起来就像在我手动转义它之前所做的那样。

XmlNode nameNode = xmlDoc.CreateElement("name");
nameNode.InnerText(); = System.Security.SecurityElement.Escape(countyInfo.CountyName.ToUpper());

关于如何处理这个问题有什么想法吗?

【问题讨论】:

  • "他们说他们需要的规范 &" 和'转义" - 然后他们的规范被破坏了,他们需要修复他们的系统末端。XML 不会变成当 ' 没有转义时语法无效,这是唯一重要的事情。

标签: c# xml


【解决方案1】:

使用System.Net.WebUtility.HtmlEncode 对您的字符串进行编码。

& quot;& apos; 是 HTML 实体编码,因此它们要求您对任何字符串值进行 HTML 编码。

【讨论】:

  • “修改数据”不是解决办法。
  • 如果您无法控制第 3 方代码,这里似乎就是这种情况。
  • 无论如何这对我没有帮助,因为规范说我需要将它转义为 & quot;和'
  • @DaveWade 告诉第三方他们应该开始使用该死的 XML 解析器来解析 XML 也不是一种选择,我怀疑。无论他们做什么,他们都做错了。
  • 我已经发布了更新 - & quot;和'是 HTML 实体 - 他们需要 HTML,而不是纯字符串。
猜你喜欢
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 2013-07-13
相关资源
最近更新 更多