0

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

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

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

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

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

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

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

有什么我忽略的吗?

4

1 回答 1

0

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

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

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

于 2020-04-29T17:56:57.007 回答