“/”的 XML 实体?
Posted
技术标签:
【中文标题】“/”的 XML 实体?【英文标题】:XML Entity for "/"? 【发布时间】:2010-10-07 01:13:57 【问题描述】:所以我正在编写一些 XML 生成代码,发现以下属性值搞砸了 XML 格式:
"Jim/Bob"
所以我查看了用作转义序列的 XML 实体,我看到的每个列表都没有包含一个用于正斜杠的列表。我在这里遗漏了一些明显的东西吗?看起来像是你想逃避的那种东西......
【问题讨论】:
你能定义“搞砸”吗?您使用什么代码来创建 XML。 好吧,事实证明它不是 / 毕竟它是同一行另一个属性中的“&”。这就解释了为什么它没有转义序列! 回想起来这个问题非常愚蠢,如果有人有代表删除或关闭它..他们应该! +1 @Alpants 保持开放,谷歌给我带来了第一个结果,答案很有帮助 我遇到了一个未转义的正斜杠导致 XSLT 中出现问题的情况:仅供参考,尽管斜杠是有效的 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 实体?的主要内容,如果未能解决你的问题,请参考以下文章