Я работаю над сборкой java-объектов в xml с использованием spring.oxm и jaxb2 с SAX Parser.
Я столкнулся с проблемой, когда мой маршаллер выдавал исключение org.xml.sax.SAXParseException, в котором указывалось:
Обнаружен недопустимый контент, начиная с элемента 'ns59: ArtID'. Один из
{[...], http://www.bipro.net/namespace/gevo":ArtID, [...]} ожидается.
В моем org.springframework.oxm.jaxb.JAXBMarshaller.graph все вроде бы нормально, по крайней мере, для моего понимания.
На графике показаны эти переменные в режиме отладки:
Это jaxax.xml.transform.result.writer перед тем, как прерваться с ошибкой и оставить строку вывода такой:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns43:getShipmentResponse
xmlns="http://www.bipro.net/namespace/basis"
xmlns:ns2="http://www.bipro.net/namespace/nachrichten"
xmlns:ns3="http://www.bipro.net/namespace/abrechnung"
xmlns:ns4="http://www.bipro.net/namespace/allgemein"
xmlns:ns5="http://www.bipro.net/namespace/schaden-leistung"
xmlns:ns6="http://www.bipro.net/namespace/partner"
xmlns:ns7="http://www.bipro.net/namespace/sachen"
xmlns:ns8="http://www.bipro.net/namespace/versicherung/produktmodell/rechtsschutz"
xmlns:ns9="http://www.bipro.net/namespace/produktmodell"
xmlns:ns10="http://www.bipro.net/namespace/versicherung/produktmodell"
xmlns:ns11="http://www.bipro.net/namespace/kapitalanlage/basis"
xmlns:ns12="http://www.bipro.net/namespace/versicherung/produktmodell/komposit"
xmlns:ns13="http://www.bipro.net/namespace/kapitalanlage/transaktion"
xmlns:ns14="http://www.bipro.net/namespace/provision"
xmlns:ns15="http://www.bipro.net/namespace/beteiligungsverhaeltnis"
xmlns:ns16="http://www.bipro.net/namespace/kapitalanlage"
xmlns:ns17="http://www.bipro.net/namespace/versicherung/produktmodell/kraftfahrt"
xmlns:ns18="http://www.bipro.net/namespace/fragen"
xmlns:ns19="http://www.bipro.net/namespace/versicherung/produktmodell/kranken"
xmlns:ns20="http://www.bipro.net/namespace/vertrag"
xmlns:ns21="http://www.bipro.net/namespace/foerderung"
xmlns:ns22="http://www.bipro.net/namespace/versicherung/produktmodell/leben"
xmlns:ns23="http://www.bipro.net/namespace/versicherung/unfall"
xmlns:ns24="http://www.bipro.net/namespace/sepa"
xmlns:ns25="http://www.bipro.net/namespace/versicherung/haftpflicht"
xmlns:ns26="http://www.bipro.net/namespace/schaden-objekte"
xmlns:ns27="http://www.bipro.net/namespace/schaden-details"
xmlns:ns28="http://www.bipro.net/namespace/versicherung/sach"
xmlns:ns29="http://www.bipro.net/namespace/fahrzeug"
xmlns:ns30="http://www.bipro.net/namespace/gevo"
xmlns:ns32="http://www.bipro.net/namespace/evb"
xmlns:ns33="http://www.bipro.net/namespace/prozesse/foerderdaten"
xmlns:ns34="http://www.bipro.net/namespace/prozesse/partner"
xmlns:ns35="http://www.bipro.net/namespace/prozesse/schaden"
xmlns:ns36="http://www.bipro.net/namespace/prozesse/vertrag"
xmlns:ns37="http://www.bipro.net/namespace/prozesse/versicherung/vertrag/komposit"
xmlns:ns38="http://www.bipro.net/namespace/prozesse/versicherung/vertrag/kraftfahrt"
xmlns:ns39="http://www.bipro.net/namespace/prozesse/versicherung/vertrag/kranken"
xmlns:ns40="http://www.bipro.net/namespace/prozesse/versicherung/vertrag/leben"
xmlns:ns41="http://www.bipro.net/namespace/versicherung/tarifierung"
xmlns:ns42="http://www.bipro.net/namespace/tools/iban"
xmlns:ns43="http://www.bipro.net/namespace/transfer"
xmlns:ns44="http://www.bipro.net/namespace/transfer/abrechnung"
xmlns:ns45="http://www.bipro.net/namespace/transfer/gevo"
xmlns:ns46="http://www.bipro.net/namespace/transfer/inkassostoerfall"
xmlns:ns47="http://www.bipro.net/namespace/transfer/schaden-leistung"
xmlns:ns48="http://www.bipro.net/namespace/transfer/schadenrueckfrage"
xmlns:ns49="http://www.bipro.net/namespace/transfer/sepa"
xmlns:ns50="http://www.bipro.net/namespace/transfer/vertrag"
xmlns:ns51="http://www.bipro.net/namespace/kontext/beruf"
xmlns:ns52="http://www.bipro.net/namespace/kontext/betriebsart"
xmlns:ns53="http://www.bipro.net/namespace/kontext/fahrzeug"
xmlns:ns54="http://www.bipro.net/namespace/kontext/partner"
xmlns:ns55="http://www.bipro.net/namespace/kontext/schaden"
xmlns:ns56="http://www.bipro.net/namespace/kontext/unternehmen"
xmlns:ns57="http://www.bipro.net/namespace/kontext/vertrag"
xmlns:xmime="http://www.w3.org/2005/05/xmlmime"> <ns43:Response>
<ns2:BiPROVersion>2.6.1.0.0</ns2:BiPROVersion>
<ns2:Status>
<ns2:ProzessID>1530635989611</ns2:ProzessID>
<ns2:Zeitstempel>2018-07-03T18:41:12</ns2:Zeitstempel>
<ns2:StatusID>OK</ns2:StatusID>
<ns2:Schwebe>false</ns2:Schwebe>
<ns2:Meldung>
<ns2:ArtID>Hinweis</ns2:ArtID>
<ns2:MeldungID>04000</ns2:MeldungID>
</ns2:Meldung>
</ns2:Status>
<ns43:Lieferung>
<ns43:ID>1530636072667</ns43:ID>
<ns43:Einstellzeitpunkt>2016-12-05T00:00:00</ns43:Einstellzeitpunkt>
<ns43:Kategorie>120000000</ns43:Kategorie>
<ns43:VerfuegbarBis>2019-12-05</ns43:VerfuegbarBis>
<ns43:Transfer xsi:type="ns45:CT_GeVoTransfer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Кто-нибудь имеет идею и может указать мне правильное направление?
Лексикору попросили 2 вещи.
1. полный XSD, который вы можете взять из моего открытого репозитория github по номеру https://github.com/JoBieker/soap-bipro/tree/master/securess-bipro/src/main/resources/xsd.
2. полный XML, которого у меня нет, так как я хотел его создать. но если бы я был успешным, что-то вроде этого должно было выйти. это еще один случай передачи данных, но структура должна быть такой же. Вы можете скачать здесь: https://github.com/JoBieker/soap-bipro/blob/master/securess-bipro/src/main/resources/target-xml.xml
Наконец, вопросы о lexicores научили меня тому, что я совершенно забыл упомянуть, что хочу создать xml. Итак, вот и есть код моего публичного репозитория github: https://github.com/JoBieker/soap-bipro
И вот полное исключение, представленное консолью:
2018-07-04 22: 19: 46.407
ОШИБКА 12986 --- [main] o.s.boot.SpringApplication
: Ошибка запуска приложения
org.springframework.beans.factory.UnsatisfiedDependencyException:
Ошибка создания бина с именем securessBiproApplication: неудовлетворен
зависимость выражается через поле «маршаллер»; вложенное исключение
org.springframework.beans.factory.BeanCreationException: ошибка
создание бина с именем 'createJaxb2Marshaller', определенного в пути к классу
ресурс [de / securess / bipro / config / Jaxb2Config.class]: неожиданный
исключение при создании бина; вложенное исключение
java.lang.IllegalArgumentException: не удалось разрешить заполнитель
'context.path' со значением "$ {context.path}" в
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:587)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:91)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues (AutowiredAnnotationBeanPostProcessor.java:373)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1350)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:580)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:503)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:317)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:315)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:199)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] вorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:760)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:869)
~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:550)
~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.boot.SpringApplication.refresh (SpringApplication.java:759)
[spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в
org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:395)
[spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в
org.springframework.boot.SpringApplication.run (SpringApplication.java:327)
[spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в
org.springframework.boot.SpringApplication.run (SpringApplication.java:1255)
[spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в
org.springframework.boot.SpringApplication.run (SpringApplication.java:1243)
[spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в
de.securess.bipro.SecuressBiproApplication.main (SecuressBiproApplication.java:43)
[classes /: na] Вызвано:
org.springframework.beans.factory.BeanCreationException: ошибка
создание бина с именем 'createJaxb2Marshaller', определенного в пути к классу
ресурс [de / securess / bipro / config / Jaxb2Config.class]: неожиданный
исключение при создании бина; вложенное исключение
java.lang.IllegalArgumentException: не удалось разрешить заполнитель
'context.path' со значением "$ {context.path}" в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:516)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:317)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:315)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:199)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor.java:251)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:1138)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1065)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:584)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] ... 18 общих кадров
пропущено. Причины: java.lang.IllegalArgumentException: не удалось
разрешить местозаполнитель 'context.path' в значении "$ {context.path}" в
org.springframework.util.PropertyPlaceholderHelper.parseStringValue (PropertyPlaceholderHelper.java:172)
~ [spring-core-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders (PropertyPlaceholderHelper.java:124)
~ [spring-core-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders (AbstractPropertyResolver.java:237)
~ [spring-core-5.0.7.RELEASE.jar: 5.0.7.RELEASE] вorg.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders (AbstractPropertyResolver.java:211)
~ [spring-core-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda $ processProperties $ 0 (PropertySourcesPlaceholderConfigurer.java:175)
~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue (AbstractBeanFactory.java:839)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:1086)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1065)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument (ConstructorResolver.java:818)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray (ConstructorResolver.java:724)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:474)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1256)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1105)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:543)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:503)
~ [spring-beans-5.0.7.RELEASE.jar: 5.0.7.RELEASE] ... 26 общих кадров
опущена
С наилучшими пожеланиями, JCB