2011-08-16 6 views
2

저는 Java로 XML 파일을로드하는 것을보고 있었으며 특정 부분을 해독 할 수없는 것 같습니다. SAX는 스트리밍 메커니즘이지만 DOM에 관해서는 다양한 XML 파일에서 SAX를 사용하는 것이 좋습니다. 다양한 사이트에서 "전체 파일로드"또는 "모든 태그로드"모델에 대해 이야기합니다.DOM에서 파일로드는 어떻게 작동합니까?

DOM은 실제로 어느 정도까지 전체 파일을로드합니까? 두 번째는 루트 노드에 액세스하고 파일의 모든 단일 바이트에 프로그램 메모리를 할당합니까? 텍스트 내용을로드 할 때 가장 낮은 레벨까지만 태그를로드합니까?

대용량 파일로 작업하게 될 것이지만 무작위 액세스가 유용 할 것이므로 편집이 필요하므로 DOM이 가장 적합하다고 생각합니다.

고마워요.

+0

가능한 [자바에서 거대한 XML 파일을 변환하는 방법?] (http://stackoverflow.com/questions/2773733/how-to-transform-huge-xml-files-in-java) – Snicolas

답변

3

전체 파일을로드하고 메모리에 트리 구조를 구성합니다. 따라서 모든 단일 태그, 속성 및 중첩 된 태그 (아무리 많은 중첩 수준에 관계없이)가로드됩니다. XML 파일이 커질수록 생성 된 트리가 커집니다.

+1

대답 :) ... 글쎄, 모두가 대답했지만 당신은 처음이었다 :) –

2

예, DOM은 전체 문서를 읽고 구문 분석 한 다음 메모리에 저장합니다.

0

당신이 구문 분석 DOM을 사용하는 경우, 당신은이 비슷한 일을 할 :

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = builder.parse(file); 

구문 분석이 실행되는 순간 (시도/캐치 내부)에 Document doc 변수가 포함됩니다 전체 문서는 DOM 계층 구조로 표현됩니다.

관련 문제