【发布时间】:2011-10-29 18:10:05
【问题描述】:
我有一个包含撇号的 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);
【问题讨论】:
-
为什么需要它?它们在 XML 中是等价的。
-
到目前为止,我遇到过一种情况,即客户端在编写 XML 时明确要求上述“编码”......但在阅读时从来没有......如果你想在 . NET 两者之间没有区别(因此无需保留),如果您需要在 .NET 之外处理它并且这是绝对必要的,那么这将需要按照您第一次编写它的方式编写它......
-
RE:我为什么需要这样做?在下游,xml 被嵌入到一些动态生成的 JavaScript 中。嵌入的撇号会破坏 JavaScript 字符串。
-
那你不能修复 JavaScript 吗?这看起来是一个合适的解决方案。
-
RE:你不能修复 JavaScript。它看起来像这样(非常简化): var myString = "XElelent.value 和其他一些用撇号标记的动态值。在 XElement.value 中有一个杂散撇号会导致 JavaScript 错误。";