Bonjour
j'ai un schéma qui contient un élément pouvant contenir n'importe quoil'enveloppe peut donc contenir divers contenus dans le tag original (text, xml, ....)
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:fr.aphp.ati.eai.hermes.enveloppe.bean.enveloppe" xmlns="urn:fr.aphp.ati.eai.hermes.enveloppe.bean.enveloppe"> <!-- Element Root : EnveloppeMessage --> <xs:element name="EnveloppeMessage" type="EnveloppeMessage"/> <!-- Constitution d'un EnveloppeMessage --> <xs:complexType name="EnveloppeMessage"> <xs:sequence> <!-- Le message original --> <xs:element name="original" type="xs:anyType"/> <!-- .... plein d'autre trucs --> </xs:sequence> </xs:complexType> </xs:schema>
parmi ces contenus le cas du xml me pose problème
soit un schéma de contenuje peux donc écrire le xml suivant
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:fr.aphp.ati.eai.hermes.enveloppe.bean.test1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:fr.aphp.ati.eai.hermes.enveloppe.bean.test1"> <xs:element name="test" type="test1"/> <xs:complexType name="test1"> <xs:sequence> <xs:element name="value" type="xs:NCName"/> </xs:sequence> </xs:complexType> </xs:schema>
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="UTF-8"?> <EnveloppeMessage xmlns="urn:fr.aphp.ati.eai.hermes.enveloppe.bean.enveloppe"> <original> <test xmlns="urn:fr.aphp.ati.eai.hermes.enveloppe.bean.test1"> <value>Hello</value> </test> </original> </EnveloppeMessage>
mon problème réside dans le parsing
lorsque je génère le code java j'obtient dans la classe EnveloppeMessage.javace qui est assez logique
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @XmlElement(required = true) protected Object original;
Je voudrais proposer une méthode qui permette au développeur qui défini un contenu de type xml de récupérer un objet de sont type sans qu'il n'ai à re-créer les classes enveloppes disponibles dans la lib que je fais.
j'aimerais pouvoir faire quelque chose pour que le développeur de test1 puisse faire
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 JAXBElement<EnveloppeMessage> je = unmarshaller.unmarshal(xsr, EnveloppeMessage.class); Test1 e = je.getValue().getOriginal();
Pour le moment je ne peux absolument pas utiliser le contenu
il est de type ElementNSImpl qui est un objet d'un package privé de Jaxb
je ne peux pas lire sont contenu. et un toString retourne [original: null]Je ne peux donc pas le reserialiszer pour le donner à un autre unmarshaller.
Merci
A+JYT
Partager