4GB XMLファイルの形式の正確性を確認するには?

4GB XMLファイルの形式の正確性を確認するには?

大容量XMLファイルの形式が正しいことを確認したいと思います。 (約4GB程度)

しかし、私が試したときにxmlwfそれが私に言うのは

filename.xml: Value too large for defined data type

何をすべきか?確認できる他の方法はありますか?

(私はDebian LinuxとGentoo Linuxを使用しています)

答え1

試してみたいかもしれませんdtdgen、ドキュメントのDTDを生成するために数年前に書かれたプログラムです。大容量ファイルの形式が正しいかどうかだけでなく、その中に何が含まれているのかを教えてくれます(どちらも知りたくて書きました)。

答え2

xmllint --noout 4GB.xml

そのような仕事。

また、メモリが不足していますが、少なくとも死ぬ前に何かを確認します。

答え3

自分で試してみませんが、試してみてください。

xmllint --valid 4GB.xml

答え4

これは古い質問ですが、提案されたものを見たことはありません。

パールとXML::Twig処理中にメモリ内のデータを削除する「クリーン」方法のおかげで、大容量のXMLファイルを処理できます。

use strict;
use warnings;

use XML::Twig;

my $twig = XML::Twig->new(
    twig_handlers => {
        _all_ => sub { $_->purge }
    }
)->parsefile( 'my_xml_file.xml' );

ハンドラは_all_ツリー分岐の各要素に対して実行され、メモリ内のデータを削除します。 XMLはメモリスペースの約10倍を占めるため、これは4Gファイルにとって重要です。ただし、XML の形式が正しくない場合は警告が表示され、中断されます。

mismatched tag at line 12, column 27, byte 274 at C:/Perl/lib/XML/Parser.pm line 187.

(ただし、中断されるため、ユーザーにのみ表示されることを覚えておいてください。最初エラーが発生しました)。

とにかく私の(4Gよりはるかに小さい)サンプルデータで動作します。

関連情報