Java 转义 XML 标记字符串

标签 java xml stringescapeutils

大多数字符编码的答案是 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 标记名称或类似名称。

我忽略了什么吗?

最佳答案

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

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

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

关于Java 转义 XML 标记字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61484843/

相关文章:

java - 创建 "could not reserve enough space for object heap"错误

java - Java 类中的 SQL 语句提取器

java - Java 中的 Int 溢出

java - 如何在位图上居中和缩放叠加的可绘制图标

xml - JAX-B 能否逐字包含 XML 值属性?

java - Java 中正确的 xml 转义

java - Thread.interrupt() 和 Thread.interrupted() 到底是如何工作的?

xml - 如何使用 XML 的 XPATH 获取子节点计数

c# - 使用 C# 生成 Powershell 脚本时转义字符