2011-11-27 2 views
0

: SAX를 사용하여 xml을 구문 분석하기위한 처리기를 만드는 방법은 무엇입니까? 나는이 XML을 구문 분석의 Xerces를 SAX를 사용하고

<product id="123"> 
    <sku>abc123</sku> 
    <location> 
    <warehouse>1</warehouse/> 
    <level>3</level> 
    </location> 
    <details> 
    <weight unit="kg">150</weight/> 
    <mfg>honda</mfg> 
    </details> 
</product> 

그래서 나는 ProductSAXHandler.java라는 내 자신의 클래스를 생성 : 내 XML을 전달할 계획

나의 봄부터 지금
public class ProductSAXHandler extends DefaultHandler { 


} 

MVC 컨트롤러 파일을 문자열로 반환하고 Product 객체를 반환하려고합니다.

그래서 내 ProductSAXHandler 내부에서 startElement, endElement 메소드를 생성합니다.

xml을 문자열로 취한 다음이 ProductSAXhandler를 인스턴스화 한 다음 구문 분석을 호출하는 메서드를 만들어야합니까?

이것은 처음으로 xml/sax를 다루기 때문에이 클래스를 어떻게 디자인 해야할지 불분명합니다.

+0

당신은 그것에 손잡이가있는 것 같습니다. 왜 그냥 시도해보고 보지 않으시겠습니까? – skaffman

+0

그냥 오른쪽 트랙에있어, 남자 자바 너무 많은 설정 문제가 내가 아무것도 내 자신을 믿지 않아 찾을 수있다 : – Blankman

+0

그래서 내가 Product 클래스를 반환하는 정적 메서드가있을거야 그 방법 해야 할 일 : ProductSAXHandler handler = new ProductSAXHandler(); ContentHandler를 핸들러로 설정 하시겠습니까? – Blankman

답변

1

이 직접 귀하의 질문에 대답하지 않습니다,하지만 난 거 라인 사이의 비트를 읽고 실제 의도에 초점을 해요 ...

당신이 데이터를 캡슐화하는 Product 클래스의 인스턴스를 원하기 때문에 아마도 구조화 된 방식으로 XML에서 아마도이 작업을 위해 JAXB을 사용하는 것이 훨씬 낫습니다. XML 입력을 객체에 바인딩하는 사용자 정의와 관련된 특정 요구 사항이 없으면 SAX를 사용하는 것보다 훨씬 간단합니다. 당신이해야 할 것들

은 다음과 같습니다

  1. 이 XML에 대한 W3C XML 스키마를 가져옵니다. 당신이 가지고 있지 않고 얻을 수 없다면, 입력 XML에 기반한 스키마를 생성 할 수있는 도구가 있습니다. Trang은 이것을 매우 쉽게 만듭니다.
  2. 스키마에서 Java 클래스를 생성하십시오. 이를 위해 Sun의 JDK에서 사용할 수있는 XJC (XML-to-Java 컴파일러)를 사용할 수 있습니다. Ant 또는 Maven과 같은 빌드 도구를 사용하는 경우 플러그인을 사용할 수 있습니다. 이렇게하면 프로세스를 자동화하여 전체 빌드의 일부로 사용할 수 있습니다.
  3. 생성 된 클래스에서 JAXB API를 사용하면 XML 문서를 객체로 쉽게 변환 할 수 있으며 그 반대의 경우도 가능합니다.

JAXB는 배우기에 다소 시간이 걸리지 만 (특히 원하는 XML-Java 매핑이 1 대 1이 아닌 경우) 장기적으로 시간을 절약하게 될 것입니다.

죄송합니다. SAX가 필요하고이 답변을 적용 할 수 없지만 다소 오래된 XML 처리 모델을 사용하기 전에 옵션을 알릴 수 있다고 생각했습니다. DOM 및 StAX가 관심의 대상이 될 수 있습니다.

관련 문제