我想检查大型 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
这是一个较旧的问题,但我还没有看到它建议:
Perl 与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_
程序触发树枝的每个元素,并丢弃内存中的数据。这对于 4G 文件很重要,因为 XML 的内存占用量约为 10 倍。但如果 XML 格式不正确,它会发出警报并中止:
mismatched tag at line 12, column 27, byte 274 at C:/Perl/lib/XML/Parser.pm line 187.
(但请记住,因为它会中止,所以它只会向您显示第一的遇到的错误)。
无论如何,适用于我的(比 4G 小得多)样本数据。