|
XML 파일 크기에는 제한이 없습니다.
같은 내용의 XML도 엔코딩을 어떻게 하느냐에 따라 파일크기는 천차만별이구요.
소스를 보니까, MS에 제공하는 XML파서를 사용하신 것 같은데,
파서에서 사용하는 메모리의 한계라던지, 아니면 내부적으로 파싱하는 과정에서 발생한 오버플로우로 보입니다.
예를 들어 , Element 목록을 처리할 때, Array형태로 할 건지 Linked List형태로 처리 할 건지에 따라 처리할 수
있는 최대량은 달라질 것입니다.
그리고, 내부적으로 사용하는 문자열 방식이 유니코드(UCS16)인지, 안시코드인지, UTF8인지에 따라서 사용하는
메모리량은 서로 다르겠지만, 최대 처리할 수 있는 한계는 반드시 존재합니다.
일단, 오픈 소스로 공개된 XML파서로 바꿔서 해 보시고, 그 한계가 어디서 생기는지 디버깅을 해 보시기 바랍니다.
그리고, 대용량의 경우 DOM방식의 XML파서는 메모리 한계나 속도면에서 불리하기 때문에, SAX방식의 XML파서를 사용하시는 것도 하나의 좋은 대안이 되겠네요.
MSXML -> DOM 방식
XmlLite -> SAX 방식
도움이 되셨길 바랍니다.
사에버 님이 쓰신 글 :
: 안녕하세요.
:
: 크기가 큰 XML파일을 다이얼로그를 이용하여 불러오려 합니다.
: packet 수가 약 400,000개 정도 됩니다. (용량 : 약 85MB)
:
: SortieNode = XMLDoc->DocumentElement;
: Data = SortieNode->GetChildNodes()->Count;
: ParsedData = new ParsedData[Data];
:
: 위와같은 소스코드로 되어있으며, count 하는 부분에서 에러가 나는 듯 합니다.
: - 에러메세지 : Thread Exit: Tread ID: XXXX(숫자 4자리)
:
: 참고로 packet 수가 10,000개 정도로 수정하여 실행하면 동작합니다.
: 사용할 수 있는 XML파일의 크기가 정해져 있는 것인지, 아니면 다른 방법이 있는지 알려주시면 감사드리겠습니다!!
|