如何防止XElement解码字符实体引用

时间:2011-10-29 18:10:05

标签: c# xml encoding xelement

我有一个包含撇号的XML字符串。我用等效的&替换撇号将修改后的字符串解析为XElement。然而,XElement正在将'变回撇号。

如何强制XElement.Parse保留编码的字符串?

string originalXML = @"<Description><data>Mark's Data</data></Description>"; //for illustration purposes only
string encodedApostrophe = originalXML.Replace("'", "&#39;");
XElement xe = XElement.Parse(encodedApostrophe);

1 个答案:

答案 0 :(得分:1)

这是正确的行为。在允许'的地方,它与&apos;&#39;&#x27;的工作方式相同。如果要在XML中包含文字字符串&#39;,则应编码&

originalXML.Replace("'", "&amp;#39;")

或解析原始XML并修改:

XElement xe = XElement.Parse(originalXML);

var data = xe.Element("data");

data.Value = data.Value.Replace("'", "&#39;");

但这样做似乎很奇怪。也许有一个更好的解决方案来解决你想要解决的问题。

此外,此编码不是“ASCII等效”,它们被称为character entity references。数字的基于字符的Unicode代码点。