저는 XML 문서인 방대한 문서에 대한 파서를 구축 중입니다. 공식 xsd가 있으며 여러 버전이 있습니다: https://github.com/interactiveadvertisingbureau/vast/tree/master
수신 XML을 역정렬화할 수 있어야 했기 때문에 jaxb2-maven-plugin
을 사용하여 모델을 생성했습니다.
네임스페이스를 언급할 수도 있고 언급하지 않을 수도 있는 수신 XML을 처리할 수 있어야 합니다. 내 문제는 네임스페이스가 있을 때는 작동하지만 네임스페이스가 없을 때는 작동하지 않는다는 것입니다.
https://stackoverflow.com/a/8717287/3067542 및 https://docs.oracle.com/javase/6/docs/api/javax/xml/bind/unmarshaller.html#unmarshalbydeclaredtype에 따르면 해결 방법: 대상 클래스 유형을 알고 있으므로 해당 클래스, 네임스페이스 여부에 관계없이 강제로 언마샬링할 수 있습니다.
이것은 내 코드입니다(github에서도 사용 가능)
으아악테스트를 실행할 때 내부 클래스가 채워지지 않은 것을 발견했습니다.
뭔가 놓쳤나요? jaxb2-maven-plugin
를 사용하여 클래스를 생성할 때 작동할 수 있도록 설정해야 하는 추가 플래그가 있나요?
이 답변은 확실히 최적화되지는 않았지만 4.2 버전의 네임스페이스 및 비네임스페이스 xml에서 작동하도록 하는 방법에 대한 힌트를 제공합니다.
parsexml
src/main/resources/xslt/vast_4.2.xslt
는:
이 시점에서 두 단위 테스트 모두 섹션 4.2에 적용 가능합니다.
위 내용은 네임스페이스가 없으면 유형을 선언하여 jaxb 역마샬링이 작동하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!