
大容量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よりはるかに小さい)サンプルデータで動作します。