2010-01-17 2 views
3

java, xpath, sax, DOM, DocumentBuilderFactory의 모든 XML 처리 메서드로 약간의 손실이 발생합니다 ... 다른 버즈 단어는 서로 어떻게 관련되어 있는지 보여줍니다 ...자바 6에서 XML 처리에 관한 자습서

1) 그래서 내 질문을 짐작하고있다 하나는 자바 6에서 XML 처리에 대한 좋은 자습서를 알고 있습니까?, 나는 몇 가지를 발견했지만 그들은 오래된 것 같습니다.

2) XML 트리를 탐색해야합니다. 다른 노드를 인식하고 데이터를 가져올 수 있어야합니다. 가장 좋은 방법은 무엇입니까?

감사

어떤 링크 감사하겠습니다

답변

6

가 자바에서 여러 가지 XML 기술은 모두 근본적으로 같은 일 (XML 트리에 액세스 할 몇 가지 방식을 제공하는)하고,하지만 모든 그것들은 대부분 다른 방식으로 존재합니다.

원본 기술인 SAX는 스트리밍 XML 프로세서입니다. 간단하게 파서를 실행하면 파서가 다양한 XML 요소를 접할 때 코드에 콜백을 수행합니다. 여기서 핵심은 XML 요소가 아니라 XML 요소를 처리한다는 것입니다. 즉, ORDER 요소 또는 ITEM 요소가 아닌 새로운 XML 요소 (XML 요소) 또는 텍스트 블록을 언제 보게 될지 알려줍니다. SAX는 토큰 레벨 바로 위의 XML을 보았습니다. 실제로 트리에서 메모리 표현을 작성하는 것은 프로그램에 달려 있습니다.

다음은 DOM입니다. 도메인 개체 모델. 이것은 웹 개발자에게 익숙한 기술입니다. 먼저 전체 XML 문서를 메모리로 소비하고 SAX와는 달리 메모리 모델 (다른 노드에 대한 포인터와 노드의 조합)에 대한 참조를 반환합니다. 정보를 찾기 위해 DOM 트리를 쉽게 찾을 수 있지만 일반적인 모델입니다. DOM 모델의 장점은 단일 문서에서 전체 문서를 가져 오는 것입니다. 단점은 전체 문서를 단일 형식으로 가져 오는 것입니다. 작은 문서에는 좋지만 엄청난 문서에는 좋지 않습니다.

물론 모든 것은 문서에서 원하는 것에 달려 있습니다. 문서의 모든 정보가 정말로 필요하다면 전체 내용을 메모리에로드 할 수 있습니다. 하위 집합 만 필요하면 스트리밍 프로세서가 특히 큰 문서의 경우 더 나은 솔루션이 될 수 있습니다.

도 역시 StAX라는 기술로 스트리밍 된 XML 문서에 기본적으로 "DOM"과 같은 뷰를 제공합니다. 이것이 의미하는 바는 DOM 문서와 마찬가지로 XML 문서로 작업 할 수 있지만 파서는 추출하려는 정보를 느리게로드하여 전체적인 메모리 영향을 줄이는 것이 가장 이상적입니다. 그래서 위의 2 가지 기법을 조합 한 것입니다.

DOM과 StAX의 경우 "XPath"라는 데이터에 액세스 할 수있는 기술이 있습니다. XPath는 선언적 방식으로 개별 요소에 액세스 할 수있는 쿼리 언어입니다. XPath는 하드 디스크의 파일 이름 경로와 동일한 방식으로 간주 할 수 있습니다. XPath가 없으면 XML 문서의 루트에서 시작하여 트리를 크롤링하여 정보를 가져오고 추출해야합니다. XPath는이 과정을 추상화하고 특히 큰 문서의 하위 집합을 다룰 때 XML 문서의 노이즈를 크게 피할 수 있습니다.

마지막으로 Java에서는 "JAXB"라는 기술이 있으며 XML 바인딩 기술입니다. 이것은 Java 클래스를 XML과 매핑하는 데 사용됩니다. 시스템이 XML 문서를 가리키면 Java 클래스가 다시 생깁니다. 또는 시스템에서 Java 클래스 인스턴스를 가리키면 XML을 다시 가져올 수 있습니다. 기본적인 경우 JAXB는 사용하기가 매우 쉽다. 특히 Java 클래스와 결과 XML을 모두 제어 할 때 더욱 그렇다.또한 JAXB와 유사한 타사 XML 바인딩 시스템이 있지만 JAXB에는 Java 6이 함께 제공됩니다.

어느 것이 필요한지는 사용자에게 달려 있습니다.

오늘날 대부분의 사람들은 SAX를 사용하지 않습니다. 실제로 사용하기에는 약간의 고통입니다. 빠르고 저렴하지만 프로그래머로서 시간이 많이 걸릴 수 있습니다.

DOM과 XPath는 오늘날 가장 일반적인 기술 일 가능성이 높습니다. 특히 현대 웹 페이지 프로그래밍과 비슷하고 브라우저가 XML을 사용하는 방식 때문일 수 있습니다. 더 작은 문서 (50-100K 미만)가 있고 특히 데이터의 하위 세트 만 필요한 경우 DOM과 XPath는 사용하기에 매우 쉽고 간단합니다.

높은 수준에서 작업하고 전체 문서 작업과 XML 읽기 및 쓰기 작업을 수행해야하는 경우 JAXB에 관심이있을 수 있습니다. 저의 유일한 관심사는 레거시 XML 문서를 클래스에 매핑하는 것이 좀 더 복잡하다는 것입니다. 그렇게하기 위해 초기에 성공하지 못할 수도 있습니다.

이들 모두는 유용한 가이드가 있으며 링크를 제공하지 않겠습니다. 오히려이 가이드를 사용하여 응용 프로그램에 가장 적합하다고 생각되는 특정 XML 기술에 초점을 맞추고 거기에서부터 시작할 수 있습니다.

+0

덕분에 :-), 정말 도움이됩니다. – special0ne

0

오늘날 대부분의 사람들은 실제로 사용하기에는 약간의 고통을 겪기 때문에 SAX를 피합니다. 빠르고, 저렴하지만 프로그래머로서 시간이 많이 걸릴 수 있습니다.

http://code.google.com/p/jlibs/wiki/SAX2JavaBinding

위의 URL은 복잡하지 않고 색소폰의 힘을 사용하는 방법을 보여줍니다.

관련 문제