转义数据绑定XML中的撇号

5

我有一个字符串来自XML,其中包含应该被转义为'的撇号,但它没有被转义。

<city place="park's place"/>

在HTML中,我正在获取值。
<span datafld="place"></span>

我需要将位置中的值更改为"park&apos;s place"而不是"park's place"。当前显示为"park's place"。

我已经花了很多时间寻找答案,但似乎找不到。

由于不允许显示任何原始代码,因此此代码示例被糟糕地拼凑在一起。

谢谢。

编辑:这是在使用JavaScript的xhtml页面上。


1
你没有告诉我们你使用的是什么编程语言、平台或API。我甚至不确定你的问题是什么。 - Laurence Gonsalves
为什么需要转义?这样做会得到完全相同的数据,但多出5个字节并且可读性更差。 - Quentin
如果您有一个datafld属性,那么您就不是在使用XHTML。 - Quentin
假设从Oracle数据库中取出的值已经被转义,代码将该值与apos;匹配而不是' - Primetime
1
数据库中的文本内容不应该被XML编码,而且您不希望页面输出中出现&apos;,因为那是一个仅限于XML的预定义实体,它不符合浏览器HTML兼容性指南。我不确定您在做什么,但我认为您需要确保始终处理原始未转义的文本,直到需要插入HTML为止。(如果您正在使用datafld而没有使用dataformatas,则已经适当地转义。) - bobince
2个回答

3
在XML的“数据模型”中,所有值都是未转义的。因此,无论您的属性是指定为:
place="park's place"

或者:

place="park&apos;s place"

或者:

place="park&#39;s place"

当你使用XML解析器(或DOM)时,你会得到"park's place"。(像"innerHTML"这样的东西是例外。)

如果你需要将其与具有不同转义级别的其他字符串进行比较,则需要转义从DOM获取的字符串,或者取消转义另一个字符串。这很像如果你要将以米为单位的测量值与以英尺为单位的测量值进行比较:你需要转换为通用的度量单位/转义级别。

如果可以的话,我会选择取消转义的方法。如果不可能,那么你需要确保在所有地方以一致的方式进行转义,这可能很困难。请注意,我向你展示了三种合法转义该特定字符串的不同方式--还有许多许多。


你所说的在我的这边没有发生。我将“park&apos;s place”放入数据库以形成XML,但它仍然在上面显示为“park&apos;s place”。无论我如何形成字符串,它都以相同的方式从datafld中出现,没有转义或反转义。 - Primetime
我在谈论使用DOM或SAX或类似的东西来读取XML(我假设您正在使用DOM,因为您提到了您正在使用Javascript)。编写XML是完全不同的事情。您没有说您正在使用什么来生成此XHTML,但通常您应该关注哪些字符在您的XML中被转义,而应该使用像DOM这样的东西来为您取消转义。 - Laurence Gonsalves

0

也许对于寻找它的人有所帮助,你可以输入符号(´)波浪线


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接