2011-12-23 4 views
4

내가 좋아 보이는 XML 파일이 있습니다일부 조건을 기반으로 어떤 색소 라이브러리가 초기에 종료를 지원합니까?

<root> 
<application-key>ABC2349293493</application-key> 
... 
.. 
</root> 

XML 파일이 오히려 큰, 그리고 I는이 요청이 속도 제한해야합니다 있는지 확인하기 위해 응용 프로그램 키를 얻을 필요가있다.

내 서버가 두려워지고있어 전체 XML을 읽지 않아도 요청을 제한 할 수있는 방법이 필요합니다.

메모리 풋 프린트로 인해 DOM이 문제가되지 않습니다.

저는 SAX에 만족하지만 xerces는 push 모델이기 때문에 xml 처리를 중단 할 수 없습니다. 지금까지 내가 아는 유일한 방법은 던져 예외입니다.

다른 색소 라이브러리 중 어떤 것이 일찍 정상적으로 종료 될 수 있습니까?

답변

3

StAX (Streaming Api for XML) pull parser.Best StAX Implementation 적절한 구현을 선택하는 것도 중요합니다.

P. 나는 여전히 예외를 던지는 SAX 방법이 더 간단하다고 생각한다.

+1

StAX와 같은 끌어 오기 구문 분석기를 사용하면 매우 자연 스럽습니다. IME는 일반적으로 훨씬 더 편리한 프로그래밍 모델입니다. –

+0

예외를 던지면 stax보다 느려지 리라 생각합니까? – Blankman

+0

@Blankman 프로파일 링없이 어느 쪽이 더 성능이 좋은지를 말하는 것이 더 어렵습니다. 그러나 나는이 간단한 경우에별로 중요하지 않다고 생각합니다. –

2

실제로 구문에서 구문 분석 프로세스를 종료하는 데 사용할 수있는 유일한 옵션은 예외입니다. Java. Sax parser. How to manually break parsing? 또는 How to stop parsing xml document with SAX at any time?으로 설명됩니다.

정말로 예외를 사용하지 않으려는 경우 끌어 오기 구문 분석기로 전환하지만 실제로는 중요하지 않다고 생각합니다.

+0

그래도 성능 문제가 발생합니까? 그것이 내가 염려하는 것입니다. 나는 그것을 시험 할 것이지만 이론적으로는 예외가 느리다. – Blankman

+1

@ 블랭크먼 - "이론적으로"무엇에 비해? 단일 기계 명령어를 실행하는 것과 비교할 때 아마도. 의심스러운 xml 구문 분석과 비교할 때. – jtahlborn

관련 문제