문제

JaxB가 얇게 썬 빵 이후로 JaxB가 가장 큰 일이라고 맹세하는 사람이 있습니다. 스택 오버 플로우 사용자가 유스 케이스가 JAXB에 대한 것이라고 생각하는 것이 무엇이며 그 사건에 대해 좋은 솔루션이거나 나쁜 솔루션이되는 것을 궁금합니다.

도움이 되었습니까?

해결책

나는 XML을 조작하기위한 JAXB의 열렬한 팬입니다. 기본적 으로이 문제에 대한 솔루션을 제공합니다 (XML, Java 데이터 구조 및 XML 스키마에 대한 친숙 함) :

XML로 작업하는 것은 어렵습니다. 기본적으로 텍스트 파일 인 XML 파일을 가져 와서 프로그램이 조작 할 수있는 일종의 데이터 구조로 변환하는 방법이 필요합니다.

JAXB는 해당 스키마에 해당하는 클래스 세트를 작성하고 작성하는 XML 스키마를 사용합니다. JAXB 유틸리티는 해당 XML을 조작하기위한 데이터 구조의 계층 구조를 생성합니다.

그런 다음 JAXB를 사용하여 XML 파일을 읽은 다음 XML의 데이터와 함께 생성 된 클래스의 인스턴스를 생성 할 수 있습니다. JAXB는 또한 반대로 수행합니다. Java 클래스를 가져 가서 해당 XML을 생성합니다.

나는 사용하기 쉽기 때문에 JAXB를 좋아하고 Java 1.6 (1.5를 사용하는 경우 jaxb .jars를 다운로드 할 수 있습니다.) 클래스 계층 구조를 만드는 방식은 직관적이며 내 경험에 따라 괜찮은 일을합니다. "데이터"에 집중할 수 있도록 "XML"을 추상화합니다.

따라서 귀하의 질문에 답하기 위해 : 작은 XML 파일의 경우 JAXB가 과잉 일 수 있습니다. XML 스키마를 만들고 유지 관리하고 데이터 구조에 Java 클래스를 활용하는 "표준 교과서 방법"을 사용해야합니다. (메인 클래스, "노드"를 나타내는 작은 내부 등급 및 그에 대한 거대한 계층 구조입니다.) 따라서 JAXB는 아마도 응용 프로그램에 대한 간단한 "선호도"목록에 그리 좋지 않을 것입니다.

그러나 복잡한 XML 스키마가 있고 그 안에 포함 된 많은 데이터가 포함 된 경우 JAXB는 환상적입니다. 내 프로젝트에서 나는 이진 (C 프로그램에 의해 소비 된 바이너리)과 XML 사이의 다량의 데이터를 변환하여 (인간이 해당 데이터를 소비하고 수정할 수 있도록). 결과적인 XML 스키마는 사소하지 않았으며 (많은 수준의 계층 구조, 일부 필드는 반복 될 수 있고, 다른 필드는 할 수 없었습니다) JaxB는이를 조작 할 수있는 데 도움이되었습니다.

다른 팁

사용하지 않는 이유는 다음과 같습니다. 성능은 어려움을 겪습니다. 마샬링 및 비 셔링 할 때 많은 오버 헤드가 있습니다. Jibx와 같은 XML-Object 바인딩에 대한 다른 API를 고려할 수도 있습니다.http://jibx.sourceforge.net/

"XML을위한 ORM"입니다. WS Death Star Systems를 위해 JAX-WS (그리고 실제로 SUN 구현은 함께 개발)와 함께 자주 사용됩니다.

나는 항상 직장에서 JAXB를 사용하고 정말 좋아합니다. 항상 변화하고 있으며 특히 XML 파일에서 태그에 대한 임의의 액세스에 적합한 복잡한 XML 스키마에 적합합니다.

나는 포주를 싫어하지만 방금 블로그를 시작했는데 말 그대로 내가 게시 한 첫 번째 것입니다!

여기에서 확인하십시오.

http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/

JAXB를 사용하면 객체 (마샬링)의 XML 표현 및 XML (unmarwhalling)의 객체 표현을 자동으로 생성 할 수 있습니다.

XML 스키마에 관한 한 두 가지 선택이 있습니다.

  • XSD에서 Java 클래스를 생성합니다
  • Java 클래스에서 XSD를 생성하십시오

또한 더 간단한 XML 직렬화 라이브러리도 있습니다 xstream, 수프 끓이는 냄비 또는 xmlbeans 그것은 대안 일 수 있습니다.

JAXB는 XML 스키마로 정의 된 외부 XML 사양으로 코딩 해야하는 경우 좋습니다.xsd).

예를 들어, 거래 신청서가 있으며 거래를 Uber Lame Trade Reporting 앱 그리고 그들은 당신에게주었습니다 ultra.xsd 계속해서. 사용 $JAVA_HOME/bin/xjc XML을 많은 Java 클래스로 바꾸는 컴파일러 (예 : UltraTrade).

그런 다음 간단한 글을 쓸 수 있습니다 어댑터 무역 대상을 변환하는 계층 UltraTrades 그리고 사용하십시오 JAXB 데이터를 Ultra-Corp로 마샬링합니다. 많이 거래를 XML 형식으로 변환하는 것에 대한 혼란보다 쉽습니다.

모든 것이 무너지는 곳은 Ultra-CORP가 실제로 자신의 사양에 순종하지 않았을 때입니다. price 그들은 a로 쓰러졌습니다 xsd:float 실제로 a로 표현되어야합니다 double!

왜 우리는 JaxB가 필요한가요?웹 서비스의 원격 구성 요소 (Java로 작성된)는 XML을 서로를 서로 교환하는 평균으로 사용합니다. 왜 XML인가? XML은 자원이 제한된 네트워크에서 메시지를 교환하기위한 경량 옵션으로 간주되기 때문입니다. 따라서 우리는 종종 이러한 XML 문서를 객체로 변환해야하며 그 반대도 마찬가지입니다. EG : 간단한 Java Pojo 직원을 사용하여 직원 데이터를 원격 구성 요소 (Java 프로그램)로 보낼 수 있습니다.

class Employee{
 String name;
 String dept;
 ....
}

이 pojo는 다음과 같이 XML 문서로 변환해야합니다.

<Employee>
  <Name>...</Name>
  <Department>...</Department>
</Employee>

원격 구성 요소에서 XML 문서 (UN-Marshall)의 Java 객체로 돌아갑니다.

JaxB는 무엇입니까?

JAXB는이 마샬링 및 비 모성 작업을 수행하는 도서관 또는 도구입니다. 그것은이 두통에서 당신을 간단하게 아프게합니다.

Jibx도 확인할 수도 있습니다. 또한 OTA (Open Travel Alliance)에 특화된 매우 우수한 XML 데이터 바인더이며 Axis2 서버에서 지원합니다. 성능과 호환성을 찾고 있다면 확인할 수 있습니다.

http://jibx.sourceforge.net/index.html

JAXB는 기본 마샬링 최적화를 통해 개선 된 성능을 제공합니다. JAXB는 XML 문서를 오가는 Java 개체를 읽고 쓰는 프로그래머 API를 정의하여 Java를 통해 XML의 읽기 및 쓰기를 단순화합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top