0

Java で XML を線形化する高速な方法を探しています

〜2GBのファイルを使用しているため、DOMは除外されています。Java ターゲットは 1.5.0.22 です。80 バイト + 改行で構成されるファイルを xml から生成する必要があります。これを、Cobol プログラムによって読み取られる DB2 テーブルに書き込む必要があります。

Cobol では、データがテーブルから CHAR として読み取られるため、サイズが重要です。これは、空の行が 80 スペースであることを意味します。

私はファイルをバイト単位で読み取ります(必要です)が、内部一時バッファ化を使用して、無視する可能性のあるシーケンスを保存できます

例 5 バイトの 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 は、テーブルに空の行を作成するか、その可能性を最大限に活用していないいくつかの行を作成します。

これは、HOST CICS 環境での有料 CPU サイクルの損失になりました

ファイルを線形化できる場合、ファイルがインデントされているかどうかに関係なく同じ出力が得られ、XML は同じ情報を保持します

何か案が?

4

1 に答える 1

5
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;
    }
于 2013-11-04T14:18:03.763 に答える