一个不寻常的问题 - 在什么情况下角括号用反斜杠转义?
我通过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\>
答案 0 :(得分:2)
在合法的HTML或XML中,左尖括号字符不会以这种方式转义。在这两种格式中'<'
个字符都替换为"<"
。具体来说,我不希望符合标准的XML构建器/序列化程序或Web服务堆栈执行此操作。
它们不会在URL中以那种方式转义。如果您足够疯狂以在网址中嵌入XML,则可以使用"%xx"
编码。
我不明白为什么DBMS需要对它存储的字符数据执行此操作。
我能想到的唯一常见情况是使用'\'
来转义'<'
,这是一些Wiki标记语言。
IMO,最可能的解释是,这是您正在使用的Web服务的一些特定于应用程序的funkiness。
答案 1 :(得分:1)
左角括号应作为实体&amp; lt; (以及任何和号作为&amp; amp;),这些都是在XML的上下文中转义。
我遇到过尖括号在正则表达式的上下文中具有不同含义的情况,并且必须像你的问题中所示那样进行转义。但是没有符合要求的XML解析器会查看该字符串并说,是的,这完全没问题。因为它不是。除非我遗漏了什么,否则那些反斜杠不应该存在。