Como verificar a boa formação do arquivo XML de 4 GB?

4

Eu quero verificar a boa formação de um grande arquivo XML. (cerca de 4 GB.)

No entanto, quando tento xmlwf , tudo o que me diz é

filename.xml: Value too large for defined data type

O que fazer com isso? Existe alguma outra maneira de verificar isso?

(estou usando o debian linux e gentoo linux)

    
por Karel Bílek 22.02.2013 / 19:07

4 respostas

2

Você pode tentar o dtdgen , um programa que escrevi há muitos anos para gerar um DTD para um documento. Ele não apenas informa se um arquivo grande é bem formado, mas também informa o que está nele (eu o escrevi porque queria saber os dois).

    
por 22.02.2013 / 20:53
2
xmllint --noout 4GB.xml

Esse tipo de trabalho.

Também fica sem memória, mas pelo menos verifica algo antes de morrer.

    
por 22.02.2013 / 19:45
0

Não tente eu mesmo, mas tente isso:

xmllint --valid 4GB.xml
    
por 22.02.2013 / 19:09
0

É uma pergunta mais antiga, mas como ainda não o sugeri:

Perl com XML::Twig pode lidar com grandes arquivos XML graças a ter um método "purge", que descarta os dados da memória à medida que você avança.

use strict;
use warnings;

use XML::Twig;

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

O manipulador _all_ é acionado em cada elemento do ramo e descarta os dados da memória. Isso é importante em um arquivo 4G, porque a pegada de memória do XML é de cerca de 10x. Mas ele lançará um alerta e abortará se o XML não estiver bem formado:

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

(mas tenha em mente que ele é abortado, ele só mostrará o erro primeiro encontrado).

Funciona de qualquer maneira nos meus dados de amostra (menores que 4G).

    
por 21.04.2015 / 17:19

Tags