2009-06-16 2 views

답변

6

XOM은 매우 빠른 표준 W3C DOM에 비해 입니다. 그것이 당신의 우선 순위라면 아무 것도 없습니다.

그러나, 여전히 DOM 형 API, 그리고 그래서 메모리 효율이 아니다. 그것은 SAX 나 STAX를 대체하지 않습니다.

1

어떻게 데이터에 액세스해야합니까? 그것은 하나의 패스 인 경우

는, 당신은 메모리에 트리를 구축 할 필요가 없습니다. SAX (빠름, 단순) 또는 StAX (빠름, 간단하지 않음)을 사용할 수 있습니다.

네비게이션하기 위해 트리를 메모리에 유지해야하는 경우 XOM 또는 JDOM이 좋습니다. DOM마지막 리조트 선택이며 확장 여부에 관계없이 레벨 1, 2 또는 3인지 여부에 관계없이

Java에 포함 된 파서 인 Xerces (Apache에서 업데이트 된 버전을 구해야하고 6.0에서도 Java로 번들 된 버전을 사용하지 않아야 함)에도 XNI이라는 스트리밍 기본 인터페이스가 있습니다.

자주 체인에서 다른 미리 만들어진 부품를 연결 SAX하거나 메모리에 자신의 모델을 구축 할 수 있기 때문에 StAX를가 잘 작동하려면

. 예를 들어 Saxon XSLT/XQuery 엔진은 DOM, SAX 또는 StAX와 함께 작동하지만 내부적으로는 TinyTree (기본값) 또는 DOM (선택 사항)을 빌드합니다. DataDirect XQuery은 SAX, StAX 또는 DOM에서도 작동하지만 은 실제로에서 StAX를 좋아합니다.

+4

당신이 말하는 SAX는 StAX보다 간단합니다. SAX는 더 간단한 API 일 수 있지만 StAX 기반 코드를 작성하는 것은 SAX에 대해 작성하는 것보다 훨씬 쉽습니다. – skaffman

4

당신이 question about the best XML library과 상단 (XOM) 답을 확인 할 수 있습니다; XOM의 장점에 대해 자세히 설명합니다. (어떤 것이 명확하지 않은 경우 코멘트를 남겨 두십시오. 피터 Štibraný는 XOM을 안팎으로 알고있는 것 같습니다.)

언급 한 바와 같이 XOM은 표준 javax.xml과 비교할 때 매우 빠르고 간단합니다. 예를 들어, this post에서 Java의 XML 파일을 읽는 가장 간단한 방법에 대한 질문을 참조하십시오. XOM을보기 좋고 (그리고 javax.xml은 다소 서투른) 멋진 예제를 수집했다. :-) 그래서 개인적으로

나는 (링크 된 게시물에서 볼 수 있듯이) 평가 한 후 XOM을 좋아 왔어요; 새로운 자바 프로젝트라면 XML 처리를 위해 XOM을 선택할 가능성이 큽니다. 내가 찾은 유일한 결점은 doesn't directly support streaming XML (dom4j와는 다른 곳)이지만 a simple workaround과 함께 잘 처리 될 수 있습니다.

+0

나는 귀하의 질문에 http://stackoverflow.com/questions/967288/how-to-stream-xml-data-using-xom이 허용 대답을 가지고 참조하십시오. 스트리밍은 여전히 ​​XOM의 단점입니까? – Sundeep

+0

XOM API가 직접 지원하지 않기 때문에 그렇습니다. (그러나 해결 방법은 응답에서 볼 수 있듯이, 매우 간단합니다.) 어쨌든, 가서 XOM 당신을 위해 작동한다면, 시도! 내가 지금 사용하게 될 또 다른 Java XML 라이브러리는 [Simple Framework] (http://stackoverflow.com/a/17041986/56285)입니다. – Jonik

+0

저는 Xoom을 사용하여 매우 빠른 대답으로 스트리밍을했습니다. 감사합니다. 난 딸꾹질없이 10000 노드로 XML을 스트리밍 할 수있었습니다. 위의 문장은'XOM은 실제로 스트리밍을 지원하지 않습니다 '라고 말했기 때문에 XOM은 기본적으로 제공하지 않지만 오도 된 것으로 나타났습니다. 나는 당신이 위의 대답에서 그것을 바꿔야한다고 생각합니다. Simple Framework Recommendation을 주셔서 감사합니다. 다음 프로젝트에서 사용해 보겠습니다. – Sundeep