XmlReader와 SAX 판독기 비교
SAX(Simple API for XML) 판독기와 마찬가지로 XmlReader도 앞으로만 이동 가능한 읽기 전용 커서입니다. 이 커서는 입력에 대해 캐시되지 않은 고속 스트림 액세스를 제공하며, 스트림이나 문서를 읽을 수 있습니다. 또한 이 커서를 사용하면 데이터를 끌어 올 수 있으며, 응용 프로그램과 무관한 레코드를 건너뛸 수 있습니다. 두 모델의 가장 큰 차이점으로, SAX 모델은 파서에서 이벤트를 응용 프로그램에 적용하는 "밀어넣기" 모델로서 새 노드를 읽었을 때마다 응용 프로그램에 알려 주지만, XmlReader를 사용하는 응용 프로그램은 판독기에서 노드를 마음대로 끌어 올 수 있습니다. 이 끌어오기 모델의 이점은 다음과 같습니다.
장점 |
설명 |
---|---|
상태 관리 |
밀어넣기 모델에서 상태가 상당히 복잡한 시스템을 빌드하려면 콘텐츠 처리기가 필요합니다. 끌어오기 모델 클라이언트에서는 자연스러운 하향 프로시저 방식을 사용하여 상태 관리를 단순화합니다. |
다중 입력 스트림 |
끌어오기 모델을 사용하면 클라이언트에서 다중 입력 스트림을 결합할 수 있지만, 밀어넣기 모델에서는 이 작업이 상당히 복잡합니다. |
계층화 |
밀어넣기 모델을 끌어오기 모델 위에 빌드할 수는 있지만, 끌어오기 모델을 밀어넣기 모델 위에 빌드할 수는 없습니다. |
다른 문자열의 복사 방지 |
일반적으로, 파서 버퍼에서 문자열 개체로 데이터를 읽어오면 해당 데이터가 클라이언트 버퍼로 밀어넣습니다. 끌어오기 모델을 사용하면 클라이언트에서는 문자열이 바로 기록되는 버퍼를 파서에 제공할 수 있습니다. |
선택 처리 |
밀어넣기 모델에서는 특성, 처리 명령 및 공백 등의 각 항목을 클라이언트에 알려 주는 반면, 끌어오기 모델 클라이언트에서는 응용 프로그램과 관련된 항목만 처리하고 나머지 항목은 건너뛸 수 있습니다. 그러면 응용 프로그램의 효율성이 크게 향상됩니다. 또한 XML 스트림이 처리되는 방식(예: 표준화)에 영향을 주는 속성을 미리 설정할 수 있습니다. |