2012-03-31 3 views
1

나는 10 개의 속성을 가진 자바 객체를 가지고있다. 3-4 개의 속성은 XML 파일에서 가져옵니다.Java로 큰 XML 파일 구문 분석

XML에는 100-150 개의 특성을 가진 요소가 하나 있습니다. 그래서 전체 XML 파일을 구문 분석 (나는이 XSD가) 및 3-4 특성을 찾아 해당 값을 검색해야합니다.

JAXB는 어떤 기술을 사용해야하는지에 대한 제안이 필요합니까? 도움을 주시면 감사하겠습니다.

+0

형용사가 "큰"문제와 관련이 있습니까? 그렇다면 우리는 얼마나 큰지를 알아야합니다. 어떤 사람들에게는 2Mb가 크고 다른 것들은 20Gb를 뜻합니다. XML에 "100-150 속성을 가진 요소가 하나"있다고 가정합니다. 이것은 모호합니다. XML에 XML 요소가 하나만 포함되어 있고 해당 요소의 속성이 100-150 개일 수 있습니다. 또는 XML에 많은 요소가 있고 그 중 하나가 100-150 개의 특성을 가질 수 있습니다. 이 구별은 해답에 큰 차이를 가져올 수 있습니다. –

+0

[JAXB가 큰 XML 파일을 청크로 파싱 할 수 있습니까] (http://stackoverflow.com/questions/1134189) 및 [JAXB FAQ : 대용량 문서 처리] (http://jaxb.java.net/guide/Dealing_with_large_documents)를 확인하십시오. html). –

+0

@Michael : 내 파일은 1MB입니다. 이 파일은 단일 장치의 구성에 대한 것입니다. 여기에는 숫자 프로토콜에 대한 설명이 들어 있습니다. 각 프로토콜에는 2-3 개의 필드가 있습니다. 나는 2 개 또는 3 개의 프로토콜의 가치에 관심이있다. – user892871

답변

2

JAXB (JSR-222)이 사용 사례에서 작동 :

내가 10 개 속성을 가진 자바 객체를 가지고있다. 속성 중 3-4 개가 XML 파일의 이됩니다.

개체의 절반 미만이 JAXB를 사용하여 XML에 매핑되는 경우 @XmlAccessorType(XmlAccessType.NONE)을 사용하는 것이 좋습니다. 이는 명시 적으로 주석 된 속성 만 XML에 매핑된다는 것을 JAXB에 알립니다.

  • http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html

    XML은 100 ~ 150 하나 개의 요소는 속성했다. 그래서 나는 (내 XSD가 없다) 내 전체 XML 파일을 구문 분석하고 3-4 속성을 찾아서 그 값을 검색해야한다.

    JAXB 구현은 StAX 또는 SAX 파서를 사용하여 XML 문서를 처리합니다. 이들은 매우 효율적인 파서이며 많은 메모리를 필요로하지 않습니다.

    +0

    입력 해 주셔서 감사합니다. 나는 초보자이며 왜 파서가 XML 문서를 처리해야하는지 이해하지 못한다. Jax-B의 비 정렬 화 (unmarshal) 메소드를 사용하면 어떻게됩니까? – user892871

    +0

    @ user892871 - JAXB 만 있으면됩니다. 내가 말한 의미는 JAXB (JSR-222) 구현은 XML 문서의 크기를 효율적으로 처리하기 위해 저수준 파서를 사용한다는 것입니다. –

    +0

    Blaise 감사합니다. – user892871