C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71892] Re:XML 파일 크기 제한이 있나요?
박우성 [solgari] 4666 읽음    2014-10-21 11:24
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파일의 크기가 정해져 있는 것인지, 아니면 다른 방법이 있는지 알려주시면 감사드리겠습니다!!

+ -

관련 글 리스트
71849 XML 파일 크기 제한이 있나요? 사에버 3356 2014/10/10
71892     Re:XML 파일 크기 제한이 있나요? 박우성 4666 2014/10/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.