java - 取消缩进或线性化 XML

标签 java xml text-processing

我正在寻找一种在 JAVA 中线性化 XML 的快速方法

我正在使用 ~2GB 文件,因此 DOM 被排除在外。 Java 目标是 1.5.0.22 我必须从 xml 生成一个由 80 字节 + 换行符组成的文件。我必须将其写入将由 Cobol 程序读取的 DB2 表中。

在 Cobol 中,大小很重要,因为数据从表中读取为 CHAR,这意味着空行为 80 个空格。

我逐字节读取文件(我必须),但我可以使用内部临时缓冲来存储要忽略的可能序列

5 字节 af ascii 文件示例

<a><b><c>psofpisogiosigpsfiogpo</c></b></a>

<a><b
><c>p
sofpi
sogio
sigps
fiogp
o</c>
</b><
/a>

文件有问题

<a>
    <b>
       <c>psofpisogiosigpsfiogpo</c>
    </b>
</a>







<a>

  <b
>


<c>ps
ofpis
ogios
igpsf
iogpo
</c>

    <
/b>

   </
a>

非线性 XML 在表中创建空行或一些未充分利用其潜力的行。

这成为主机 CICS 环境下付费 cpu 周期的损失

如果我可以线性化文件,无论文件是否缩进并且 XML 保留相同的信息,我都会得到相同的输出

有什么想法吗?

最佳答案

private static final String XML_LINARIZATION_REGEX = "(>|&gt;){1,1}(\\t)*(\\n|\\r)+(\\s)*(<|&lt;){1,1}";

private static final String XML_LINARIZATION_REPLACEMENT = "$1$5";

 public static String linarizeXml(String xml) {
        return (xml!= null) ? xml.trim().replaceAll(XML_LINERIZATION_REGEX, XML_LINERIZATION_REPLACEMENT) : null;
    }

关于java - 取消缩进或线性化 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445152/

相关文章:

java - 一维java数组的问题

将文档中属于同一部分的部分分组的算法

python - 如何使用 NBA.com 的数据?

c++ - 识别(编程)语言的关键字

java - 测试 Spring MVC Controller 的 @MessageMapping WebSocket 方法

java - @Async 在 Spring Boot 应用程序中给我错误

java - JOOQ如何将时间戳和表示毫秒的整数相加?

java - 使用 xmldsig 签名的 JAXB 编码

xml - 为 Weblication 自动生成 XML 站点地图

xml - 如何使用Powershell循环创建XML文件的元素?