대용량 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보다 훨씬 작은) 샘플 데이터에 작동합니다.