2009-10-26 8 views
1

JAXB을 사용하여 xml을 구문 분석합니다. 추가 태그가있는 XML이 유효하지 않은 경우에도 XML을 성공적으로 파싱하고 싶습니다. XSD에 존재하지 않는 태그는 무시하십시오. 가능한가?유효하지 않은 XML 구문 분석

+0

: } }' – Jherico

+0

내 코드는 다음과 같습니다. Jaxb는 알 수없는 태그까지 성공적으로 파싱합니다. 알려진 태그는 모두 유효하지 않습니다. Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setValidating (false); ValidationEventHandler validationHandler = new IwisValidationEventHandler(); unmarshaller.setEventHandler (validationHandler); 공용 클래스 IwisValidationEventHandler는 ValidationEventHandler { 을 구현합니다. 전용 정적 로거 logger = Logger.getLogger (IwisValidationEventHandler.class); public boolean handleEvent (ValidationEvent ve) { return true; } } –

답변

0

올바른 형식의 XML에 대해 이야기하고 있지만 스키마에 정의되지 않은 요소가 포함 된 XML을 의미한다고 가정합니다.

그렇다면 JAXB는 문제가 없습니다. JAXB가 인식하지 못하는 입력 XML의 요소는 무시됩니다.

+0

누락 된 요소는 어떻게됩니까? 나는 xsd가없는 xml 문서를 가지고 있는데, xml에서 스키마를 생성한다.하지만 XML 문서 중 하나에 누락 된 요소가있는 경우가 때때로 발생한다. 그걸 어떻게 처리 할 지 어딘가에서 가르쳐 주시겠습니까? 스키마를 수정하고 필수 요소가 아닌 요소를 설정하는 것이 전부입니까? 그리고 그 요소를 나타내는 객체는 비어있을 것입니까? 내가 jaxb를 사용할지 또는 각 XML 문서에 대해 수동으로 DOM을 빌드할지 결정한다. 하지만 지난 번에 jaxb를 사용한 해입니다. 미리 감사드립니다. – lisak

0

내 코드는 다음과 같습니다. Jaxb는 알 수없는 태그가 첫 번째 알 수없는 태그까지 성공적으로 파싱 한 후 모든 정의 된 태그에 대해이 태그가 알려지지 않은 태그임을 표시합니다 ("Unexpected element {} ..."메시지를 인쇄하십시오).

`Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setValidating (false); ValidationEventHandler validationHandler = 새로운 IwisValidationEventHandler(); unmarshaller.setEventHandler (validationHandler);

공용 클래스 IwisValidationEventHandler는 ValidationEventHandler { }을 구현합니다. 정적 정적 Logger logger = Logger.getLogger (IwisValidationEventHandler.class); public boolean handleEvent (ValidationEvent ve) { System.out.println (ve.getMessage); return true; 당신은이 작업을 수행 할 때 당신이 얻고있는 오류를 지정할 수 있습니다 모든 요소

<xsd:complexType name="Type">   
    <xsd:sequence> 
    <xsd:element name="root" type="Root"/> 
     <xsd:any maxOccurs="unbounded" processContents="lax"/> 
    </xsd:sequence> </xsd:complexType> 
..... 
0

당신은 XSD를 추가 할 수 있습니까? 그리고 어떤 JAXB 구현을 사용하고 있습니까? 어쩌면 언 마샬 러 (unmarshaller)를 인스턴스화하고 XML을 파싱하는 방법을 보여주는 코드 스 니펫일까요?