Bonjour

j'ai un schéma qui contient un élément pouvant contenir n'importe quoi
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>
l'enveloppe peut donc contenir divers contenus dans le tag original (text, xml, ....)
parmi ces contenus le cas du xml me pose problème
soit un schéma de contenu
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>
je 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
<?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.java
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    @XmlElement(required = true)
    protected Object original;
ce qui est assez logique

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