JAXB
을 사용하여 xml을 구문 분석합니다. 추가 태그가있는 XML
이 유효하지 않은 경우에도 XML
을 성공적으로 파싱하고 싶습니다. XSD
에 존재하지 않는 태그는 무시하십시오. 가능한가?유효하지 않은 XML 구문 분석
답변
올바른 형식의 XML에 대해 이야기하고 있지만 스키마에 정의되지 않은 요소가 포함 된 XML을 의미한다고 가정합니다.
그렇다면 JAXB는 문제가 없습니다. JAXB가 인식하지 못하는 입력 XML의 요소는 무시됩니다.
누락 된 요소는 어떻게됩니까? 나는 xsd가없는 xml 문서를 가지고 있는데, xml에서 스키마를 생성한다.하지만 XML 문서 중 하나에 누락 된 요소가있는 경우가 때때로 발생한다. 그걸 어떻게 처리 할 지 어딘가에서 가르쳐 주시겠습니까? 스키마를 수정하고 필수 요소가 아닌 요소를 설정하는 것이 전부입니까? 그리고 그 요소를 나타내는 객체는 비어있을 것입니까? 내가 jaxb를 사용할지 또는 각 XML 문서에 대해 수동으로 DOM을 빌드할지 결정한다. 하지만 지난 번에 jaxb를 사용한 해입니다. 미리 감사드립니다. – lisak
내 코드는 다음과 같습니다. 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>
.....
- 1. 유효하지 않은 HTML을 구문 분석하는 XML
- 2. PHP를 사용하는 형식화되지 않은 XML 구문 분석
- 3. iframe에서 xml 구문 분석
- 4. Python XML 구문 분석
- 5. 타사 XML 구문 분석
- 6. XML 구문 분석 (PHP)
- 7. jQuery를 구문 분석 XML
- 8. AS2로 XML 구문 분석
- 9. php xml 구문 분석
- 10. iPhone에서 XML 구문 분석
- 11. 히브리어로 XML 구문 분석
- 12. XML 요소 구문 분석
- 13. XMLHttpRequest의 XML 구문 분석
- 14. Java XML 구문 분석
- 15. 구문 분석 XML 파일
- 16. Asp XML 구문 분석
- 17. PHP XML 구문 분석
- 18. XML 구문 분석 의심
- 19. XML 구문 분석 오류
- 20. xml dom 구문 분석
- 21. 구문 분석 잘못된 XML
- 22. Xml 안드로이드에서 구문 분석
- 23. 느린 xml 구문 분석
- 24. xml 구문 분석 코드
- 25. 거대한 XML 구문 분석
- 26. 문자열에서 xml 구문 분석
- 27. Drupal의 XML 구문 분석
- 28. 구문 분석 XML
- 29. Perl XML 구문 분석
- 30. XML 구문 분석 오류
: } }' – Jherico
내 코드는 다음과 같습니다. 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; } } –