如何检查 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

这是一个较旧的问题,但我还没有看到它建议:

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 小得多)样本数据。

相关内容