如何防止XElement解码字符实体引用
本文关键字:实体 引用 字符 解码 何防止 XElement | 更新日期: 2023-09-27 18:12:40
我有一个包含撇号的XML字符串。我将撇号替换为其等效的&将修改后的字符串解析为XElement。然而,XElement正在改变'回到撇号。
如何强制XElement。解析以保留编码的字符串?
string originalXML = @"<Description><data>Mark's Data</data></Description>"; //for illustration purposes only
string encodedApostrophe = originalXML.Replace("'", "'");
XElement xe = XElement.Parse(encodedApostrophe);
这是正确的行为。在允许'
的地方,它的工作原理与'
, '
或'
相同。如果希望在XML中包含字面值字符串'
,则应该编码&
:
originalXML.Replace("'", "&#39;")
或者解析原始XML并修改:
XElement xe = XElement.Parse(originalXML);
var data = xe.Element("data");
data.Value = data.Value.Replace("'", "'");
但是这样做看起来真的很奇怪。也许有一个更好的方法来解决你想要解决的问题。
同样,这种编码不是"等效ASCII",它们被称为字符实体引用。而数字则基于字符的Unicode码点。