【问题标题】:In what context are angle brackets escaped with backslashes?在什么情况下用反斜杠转义尖括号?
【发布时间】:2010-08-04 06:41:37
【问题描述】:

一个不寻常的问题 - 在什么情况下用反斜杠转义尖括号?

我正在通过 Web 服务发送一个 XML 文档(作为字符串 xsd 类型),它将它保存到数据库中,但是在那里我看到所有 XML 的尖括号都用反斜杠转义了,所以我想知道确切的位置(Java XML 创建使用 DocumentBuilder 和 Transformer、Web 服务堆栈、保存到数据库或其他?)它被转义了?

例子:

预期的 XML:

<?xml version="1.0" encoding="UTF-8"?><Params><param name="qqq">1</param></Params>

实际结果:

\<?xml versionenter code here="1.0" encoding="UTF-8"?\>\<Params\>\<param name="qqq"\>1\</param\>\</Params\>

【问题讨论】:

    标签: java xml oracle web-services escaping


    【解决方案1】:

    在合法的 HTML 或 XML 中,左尖括号字符不会以这种方式转义。在这两种格式中,'&lt;' 字符都替换为"&amp;lt;"。具体来说,我不希望符合标准的 XML 构建器/序列化器或 Web 服务堆栈来执行此操作。

    它们不会在 URL 中以这种方式转义。如果您足够疯狂地在 URL 中嵌入 XML,您将使用 "%xx" 编码。

    我不明白为什么 DBMS 需要对其存储的字符数据执行此操作。

    我能想到的唯一常见情况是使用 '\' 转义 '&lt;' 是在某些 Wiki 标记语言中。

    IMO,最可能的解释是,这是您正在使用的 Web 服务的一些特定于应用程序的问题。

    【讨论】:

      【解决方案2】:

      左尖括号应转义为实体 < (以及与 & 一样的任何与号)这就是在 XML 的上下文中转义的全部内容。

      我遇到过尖括号在正则表达式的上下文中具有不同含义的情况,并且必须像您的问题中所示那样进行转义。但是没有符合标准的 XML 解析器会查看该字符串并说,是的,这很好。因为不是。除非我遗漏了什么,否则这些反斜杠不应该存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 2022-07-04
        • 1970-01-01
        • 1970-01-01
        • 2021-02-22
        • 2015-09-14
        相关资源
        最近更新 更多