“/”的 XML 实体?

Posted

技术标签:

【中文标题】“/”的 XML 实体?【英文标题】:XML Entity for "/"? 【发布时间】:2010-10-07 01:13:57 【问题描述】:

所以我正在编写一些 XML 生成代码,发现以下属性值搞砸了 XML 格式:

"Jim/Bob"

所以我查看了用作转义序列的 XML 实体,我看到的每个列表都没有包含一个用于正斜杠的列表。我在这里遗漏了一些明显的东西吗?看起来像是你想逃避的那种东西......

【问题讨论】:

你能定义“搞砸”吗?您使用什么代码来创建 XML。 好吧,事实证明它不是 / 毕竟它是同一行另一个属性中的“&”。这就解释了为什么它没有转义序列! 回想起来这个问题非常愚蠢,如果有人有代表删除或关闭它..他们应该! +1 @Alpants 保持开放,谷歌给我带来了第一个结果,答案很有帮助 我遇到了一个未转义的正斜杠导致 XSLT 中出现问题的情况: 这试图运行一个 XPath 表达式,当然, 失败的。我意识到我只需要将它用单引号括起来就可以了: 我评论这个只是因为我的(愚蠢的)问题让我之前进入了这个页面我想通了。 【参考方案1】:

仅供参考,尽管斜杠是有效的 XML,但请注意它是如何在下游使用的。我们用它来连接一个天蓝色的服务总线队列。 Azure 本身在连接字符串中生成了带有斜杠的密钥,但是当我们尝试使用它们时,它们会悄无声息地中断。用“/” 转义它们就可以了

"Jim/Bob"

【讨论】:

【参考方案2】:

我知道事实证明这不是问题,但我认为除了 bobince 的回答之外,提到 Fraction Slash html 实体 ⁄ 看起来 @987654321 会很有帮助@。以防万一访问此页面的人确实确实想要一个 HTML 实体来表示正斜杠。

【讨论】:

SAX 解析器使用 ⁄ 给我一个关于引用但未声明的实体的错误。所以我使用了 Unicode 等价的 ⁄而且效果很好。谢谢。 确实@Lambat,我没有那么具体;您需要在 XML 中使用 ⁄ 实体,这自然也是有效的 HTML,但在 HTML 中,您可以使用更容易记住的 ⁄ HTML 实体来获得额外的便利。 @bobince 建议 /但是有/还有【参考方案3】:

我认为此线程中的 cmets 并不完全正确,因为如果您使用模式 (XSD),您可以毫无问题地定义名称为 Jim、Bob 和 Jim/Bob 的元素。但是当你想定义元素和实体时:

<names>
  <Jim>Carrey</Jim>
  <Bob>Jones</Bob>
  <Jim/Bob>Six figured Hillbilly</Jim/Bob>
</names>

问题很明显。

【讨论】:

谢谢。这是我遇到的问题。我需要用有效的替代品替换一堆无效的 xml 元素字符。【参考方案4】:

正斜杠按原样有效,不需要进一步编码。

唯一的保留字符是:

>
<
&
%

更多 XML 实体 - http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

【讨论】:

‘%’ 不需要在 XML 中编码。 ‘>’ 可能需要在一种特定的利基情况下进行编码。 '"' 或 ''' 将需要在属性值内进行编码(无论哪个用作该属性的分隔符)。 不。没有魔法,什么都没有。在我的情况下没有任何帮助。只有formatted="false" 为我解决了这个问题。 一些文本编辑器渲染的字符看起来很好,但是在不同的编辑器中打开它时,您会看到该字符实际上是一个非法字符。我有一种情况,我从 MS Word 将包含 em-dash(长连字符)的文本复制到记事本中的 XML 文件中。那里看起来不错,但 XML 最终无效。查看 Visual Studio Code 中的文件,em-dash 被呈现为无效字符(其中带有问号的菱形)。因此,将文本重新复制到 Visual Studio Code 中并重新保存,文件保留了有效的 em-dash 字符。去图吧。【参考方案5】:

它没有预定义的实体引用,但您可以使用字符引用:“/”。

但是,您不需要转义 / 以包含在 XML 中。您可能必须将其包含在其他内容中,例如 URI 路径部分。但是,您必须先将其转义为该格式;获取 URI 的应用程序无法知道您是否在 XML 中对其进行了编码。

【讨论】:

【参考方案6】:

我不明白为什么“Jim/Bob”的值需要转义或导致 XML 出现任何问题。

【讨论】:

【参考方案7】:

您可能有一个受约束的属性,如 XML Schema 中所定义。

我不知道您所说的 XML 格式是什么意思。

【讨论】:

以上是关于“/”的 XML 实体?的主要内容,如果未能解决你的问题,请参考以下文章

把实体类转成xml让list的最外层标签失效

3. XML实体注入漏洞的利用与学习

xml定义实体

C#实体类与XML相互转换

简单实体类和xml文件的相互转换

Linq操作XML生成XML,实体生成XML和互转