0

xml ファイル (ABC.xml) があり、複製する必要があるのは

<Transaction>...</Transaction>    

複数回 (100000 回以上) ヘッダーとトレーラーをそのまま維持し、最終サイズが最大 1GB になる NEW.xml を作成します。また、トランザクションごとに順番に Uniqueid をインクリメントする必要があります。

私はxmlを初めて使用するので、これを可能な限り最善の方法で検索しており、混乱しています。それを行うための最良の方法(DOMまたはSAXを使用)とコードの一部を教えてください。また、それについてのリンクをいくつか教えてください。

ABC.xml
========
<?xml version="1.0" encoding="UTF-8"?>
<Header><Datetime><date>20130209</date><Time>01:12</Time></Datetime></Header>
<Transaction>
    <Uniqueid>1230001</Uniqueid>
<Affiliate>
    <Name>abc</Name>
    <Address>
        <line1>aaaa</line1>
        <line2>bbbb</line2>
        <line3>cccc</line3>
    </Address>
    <Amount>123.00</Amount>
    <Currency>USD</Currency>
    <Purpose>
        <line1>aaaa</line1>
        <line2>bbbb</line2>
        <line3>cccc</line3>
    </Purpose>
</Affiliate>
</Transaction>
<Trailer><TotalTransactions>1</TotalTransactions><TotalAmount>123<TotalAmount>    </Trailer>


NEW.xml
=======
<?xml version="1.0" encoding="UTF-8"?>
<Header><Datetime><date>20130209</date><Time>01:12</Time></Datetime></Header>
<Transaction>
<Uniqueid>1230001</Uniqueid>
<Affiliate>
    <Name>abc</Name>
    <Address>
        <line1>aaaa</line1>
        <line2>bbbb</line2>
        <line3>cccc</line3>
    </Address>
    <Amount>123.00</Amount>
    <Currency>USD</Currency>
    <Purpose>
        <line1>aaaa</line1>
        <line2>bbbb</line2>
        <line3>cccc</line3>
    </Purpose>
</Affiliate>
</Transaction>
<Transaction>
<Uniqueid>1230002</Uniqueid>
<Affiliate>
    <Name>abc</Name>
    <Address>
        <line1>aaaa</line1>
        <line2>bbbb</line2>
        <line3>cccc</line3>
    </Address>
    <Amount>123.00</Amount>
    <Currency>USD</Currency>
    <Purpose>
        <line1>aaaa</line1>
        <line2>bbbb</line2>
        <line3>cccc</line3>
    </Purpose>
</Affiliate>
</Transaction>
<Trailer><TotalTransactions>2</TotalTransactions><TotalAmount>246<TotalAmount></Trailer>
4

1 に答える 1

0

ソース XML が整形式である場合に役立ちます。外側のラッパー要素が必要です。

Java で使用できる XQuery プロセッサは多数あります (Saxon など)。クエリを実行するだけ

<doc>{doc/Header, for $i in 1 to 100000 return doc/Transaction, doc/Footer}</doc>

提供された入力ドキュメントで<doc>、外側のラッパー要素と見なします。

于 2013-02-09T23:54:27.090 に答える