2012-06-27 6 views
0

가능한 중복 :이 꽤 복잡한 XML 구조는 느낌자바 클래스 표현

<Root> 
    <Commodity> 
     <Which name="Book" /> 
     <Book name="harley" price="5" /> 
     <Book name="Marley" price="8" /> 
     <Book name="hampi" price="10" /> 
    </Commodity> 
    <Item> 
     <Commodity> 
     <Which name="fiction" /> 
     <Book name="harley" price="5" /> 
     <Book name="Marley" price="8" /> 
     <Book name="hampi" price="10" /> 
     </Commodity> 
     <Item> 
     <Commodity> 
      <Which name="thriller" /> 
      <Book name="hjhj" price="5" /> 
      <Book name="ccvcv" price="8" /> 
      <Book name="vcvnnn" price="10"/> 
     </Commodity> 
     </Item> 
    </Item> 
</Root> 

:
What is the best/simplest way to read in an XML file in Java application?

나는이 같은 XML을 중첩 된 태그가 있기 때문입니다. 구조에 대한 Java 클래스를 생성 할 수있는 방법이 있습니까?

+0

빠른 Google 검색 또는 stackoverflow 검색을 통해 이미 많은 답변이 있음을 알았을 것입니다. –

답변

3

XSD 또는 DTD가있는 경우 JAXB을 사용하여 쉽게 문서 표현을 만들 수 있습니다.

스키마 정의가없는 경우 작성하는 것이 좋습니다. 어쨌든 곧 충분할 것입니다. 문서의 유효성을 검사하거나 다른 사람들과 형식을 공유하는 즉시

BTW,이 복잡한 XML 문서가 아닙니다)

+0

XSD 또는 DTD없이 JAXB 매핑을 만들 수 있습니다. – buc

+0

@buc ​​주석을 사용하여 수행 할 수 있지만 질문은 * 클래스 생성 *과 관련이 있습니다. 스키마 정의없이이를 수행 할 수있는 방법이 있습니까? – toniedzwiedz

+0

맞아, 나는 그 부분을 간과했다. – buc

1

나는 완전히 스키마의 필요성에 @ 톰에 동의하지만, 가끔는 잔인한입니다. XStream과 같은 빠르고 간단한 OXM 프레임 워크를 사용할 수 있습니다. http://x-stream.github.io/

0

XSD (또는 다른 스키마)는 직접적인 자식에 대해서만 제약 조건을 제공합니다. 따라서 Item 또는 무한대의 중첩 수준이 두 가지 수준인지 여부가 명확하지 않습니다. 전자의 경우 수동으로 코드를 작성해야합니다. 스키마는 자동으로 코드를 작성합니다.

문서 코퍼스에서 스키마를 제외하는 것은 매우 어려운 작업입니다.

Item의 중첩 된 사용이 Item에 대한 여러 속성을 나타내는 유용한 방법이 될 수 없다는 점에 대해서도 언급했습니다.