4GB XML 파일의 형식 정확성을 확인하는 방법은 무엇입니까?

4GB XML 파일의 형식 정확성을 확인하는 방법은 무엇입니까?

대용량 XML 파일의 형식이 올바른지 확인하고 싶습니다. (약 4GB 정도)

그러나 내가 시도했을 때 xmlwf그것이 나에게 말하는 것은

filename.xml: Value too large for defined data type

무엇을 해야 할까요? 확인할 수 있는 다른 방법이 있나요?

(저는 데비안 리눅스와 젠투 리눅스를 사용하고 있습니다)

답변1

당신은 시도하고 싶을 수도 있습니다dtdgen, 문서에 대한 DTD를 생성하기 위해 수년 전에 작성한 프로그램입니다. 대용량 파일의 형식이 올바른지 여부뿐만 아니라 그 안에 무엇이 들어 있는지도 알려줍니다(둘 다 알고 싶어서 썼습니다).

답변2

xmllint --noout 4GB.xml

그런 종류의 일.

또한 메모리가 부족해지지만 적어도 죽기 전에 무언가를 확인할 것입니다.

답변3

직접 시도하지는 않지만 시도해 보세요.

xmllint --valid 4GB.xml

답변4

이것은 오래된 질문이지만 제안된 것을 본 적이 없습니다.

펄과XML::Twig처리 중에 메모리의 데이터를 삭제하는 "clean" 방법 덕분에 대용량 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보다 훨씬 작은) 샘플 데이터에 작동합니다.

관련 정보