【问题标题】:Escape an apostrophe from a data binding's XML从数据绑定的 XML 中转义撇号
【发布时间】:2011-05-23 03:05:07
【问题描述】:

我有一个来自 xml 的字符串,带有一个撇号,应该转义为 ',但事实并非如此。

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

在 html 中,我正在获取价值。

<span datafld="place"></span>

我需要将值设置为“park&amp;apos;s place”而不是 park's place。目前它显示“公园的地方”。

我花了很多时间试图找到答案,但似乎找不到答案。

这个代码示例被严重破解,因为我不允许显示任何原始代码。

谢谢。

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

【问题讨论】:

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

标签: html xml data-binding


【解决方案1】:

在 XML“数据模型”中,所有值都未转义。那么你的属性是否被指定为:

place="park's place"

或:

place="park&apos;s place"

或:

place="park&#39;s place"

当您使用 XML 解析器(或 DOM)时,您将获得“公园的位置”。 (像“innerHTML”这样的东西是这个一般规则的一个例外。)

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

如果可以的话,我会选择不逃避的方法。如果这不可能,那么您需要确保以一致的方式无处不在逃脱,这可能很困难。请注意,我已经向您展示了三种不同的合法转义特定字符串的方法——还有更多。

【讨论】:

  • 你所说的不是发生在我这边。我将“park&amp;apos;s place”放入数据库以形成 XML,它仍然在上面显示的跨度中显示“park&amp;apos;s place”。无论哪种方式我形成字符串,它都来自 datafld没有转义或取消转义。
  • 我说的是使用 DOM 或 SAX 或类似于读取 XML 的东西(我假设您使用的是 DOM,因为您提到您使用的是 Javascript)。编写 XML 完全是另一回事。你还没有说你用什么来生成这个 XHTML,但通常你应该关心在你的 XML 中哪些字符被转义了,你应该使用像 DOM 这样的东西来为你转义它们。
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 2016-03-23
相关资源
最近更新 更多