次のようなXMLがあります
<Jobs>
<job>
....
</job>
<job>
....
</job>
....
</Jobs>
xmlreader と xmlwriter またはその他のオプションを使用して、ファイル全体をメモリに取り込まずに、各ジョブ ノードを個別のファイルに書き込む最善の方法は何でしょうか?
XSLT 3.0 とストリーミングはまだ初期段階ですが、次の XSLT 3.0 スタイルシートは、Saxon-EE 9.4 で機能するはずです。
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:mode streamable="yes" on-no-match="shallow-copy">
<xsl:template match="job">
<xsl:result-document href="job{position()}.xml">
<xsl:next-match/>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
データが実際に説明したとおりに見える場合 (空白を含む)、最良のオプションは StreamReader を使用することです。現在の行の最後まで読み取るメソッドがあります。に到達するまで、行を読みます</job>
。次に、そのジョブをフラッシュして繰り返します。
また、XmlReader が悪いオプションだとは思いません。