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 甚至会拒绝新元素的名称,因为它与元素名称的规范不匹配。您的问题至少有两种可能的解决方案:
您可以定义自己的转义机制,用于对元素名称进行编码和解码。例如,您可以使用 _
作为转义序列。序列 __
(两个下划线)将是文字 _
,序列 _XX
或 _uXXXX
将是您要写入的 ascii/unicode 字符。
您将列名保存在属性中。这样您就可以保存其中的每个值,甚至可以使用您选择的 XML API 以正确的编码保存值。
大多数字符编码的答案是 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 甚至会拒绝新元素的名称,因为它与元素名称的规范不匹配。您的问题至少有两种可能的解决方案:
您可以定义自己的转义机制,用于对元素名称进行编码和解码。例如,您可以使用
_
作为转义序列。序列__
(两个下划线)将是文字_
,序列_XX
或_uXXXX
将是您要写入的 ascii/unicode 字符。您将列名保存在属性中。这样您就可以保存其中的每个值,甚至可以使用您选择的 XML API 以正确的编码保存值。