>  기사  >  네임스페이스가 없으면 유형을 선언하여 jaxb 역마샬링이 작동하지 않습니다.

네임스페이스가 없으면 유형을 선언하여 jaxb 역마샬링이 작동하지 않습니다.

PHPz
PHPz앞으로
2024-02-06 09:09:09824검색
질문 내용

저는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제