Java 转义 XML 标记字符串

Java escape XML token strings

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

允许的字符很简单:https://www.w3.org/TR/xml11/#sec-common-syn

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

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

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

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

显然无效。目前,我什至没有关于编码方式的计划。需要使用 _x26BIC_x26COL1 标签名称或类似名称。

有什么我忽略的吗?

XML 元素标签没有字符串转义机制。某些 APIs 甚至会拒绝新元素的名称,因为它与元素名称的规范不匹配。您的问题至少有两种可能的解决方案:

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

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