Java转义XML标记字符串



大多数字符编码的答案是commons.text版本中的Apache StringEscapeUtils。同意可用于转义xml标记之间的字符串。但是,如何转义xml令牌本身呢?

允许的字符很简单:https://www.w3.org/TR/xml11/#sec-普通同步

我的用例是将数据库表转换为XML,其中每个列名都是一个XML标记。

<ROW><COL1>Hello</COL1></ROW>

工作正常,但如果列名是"/BIC/COL1"怎么办?

<ROW></BIC/COL1>Hello<//BIC/COL1></ROW>

显然是无效的。目前,我甚至没有一个关于编码可能是什么样子的计划。需要使用_x26BIC_x26COL1标记名或类似名称。

有什么我忽略的吗?

XML元素标记没有字符串转义机制。当新元素的名称与元素名称的规范不匹配时,一些API甚至会拒绝该名称。你的问题至少有两种可能的解决方案:

  1. 您可以定义自己的转义机制,用于对元素名称进行编码和解码。例如,可以使用_作为转义序列。序列__(两个下划线(将是文字_,序列_XX_uXXXX将是要编写的ascii/unicode字符。

  2. 将列名保存在属性中。通过这种方式,您可以保存其中的每个值,甚至可以使用您选择的XML API以正确的编码保存值。

最新更新