我有一个包含撇号的XML字符串。我用等效的&替换撇号将修改后的字符串解析为XElement。然而,XElement正在将'变回撇号。
如何强制XElement.Parse保留编码的字符串?
string originalXML = @"<Description><data>Mark's Data</data></Description>"; //for illustration purposes only
string encodedApostrophe = originalXML.Replace("'", "'");
XElement xe = XElement.Parse(encodedApostrophe);
答案 0 :(得分:1)
这是正确的行为。在允许'
的地方,它与'
,'
或'
的工作方式相同。如果要在XML中包含文字字符串'
,则应编码&
:
originalXML.Replace("'", "&#39;")
或解析原始XML并修改:
XElement xe = XElement.Parse(originalXML);
var data = xe.Element("data");
data.Value = data.Value.Replace("'", "'");
但这样做似乎很奇怪。也许有一个更好的解决方案来解决你想要解决的问题。
此外,此编码不是“ASCII等效”,它们被称为character entity references。数字的基于字符的Unicode代码点。