Bonjour à tous,

Voilà je travaille actuellement sur un projet d'import/export de données entre 2 bases Oracle.

Le principe : extraire des données au format XML afin de les intégrer dans une autre base.

Voici mon problème:

J'ai un Schéma XSD où il existe une relation imbriquée entre 2 éléments t1,t2 représentant des tables SQL. La référence à t2 se fait en plein milieu de la déclaration de t1.

exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<xs:element name="t1">
  <xs:element name = "t1c1"/>
  <xs:element ref="t2" maxOccurs="unbounded"/>
  <xs:element name = "t1c2"/>
</xs:element>
 
<xs:element name="t2">
  <xs:element name = "t2c1"/>
</xs:element>
Pour l'export j'ai mis en place un système lisant le squelette de chaque table dans le schéma XSD inclus dans un Dataset et générant à partir de ce dernier les requêtes d'extraction.
Je parcours donc toutes les elements de types "Tables SQL" et je remplis un dataset qui sera ensuite écrit dans un fichier XML. C'est au niveau de l'ajout des données dans le dataset que ça coince...

En effet dans le cas de données imbriquées, les données sont insérées en fin d'élément. Ainsi au lieu d'avoir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<t1>
  <t1c1>x</t1c1>
  <t2>
    <t2c1>z</t2c1>
  </t2>
  <t1c2>y</t1c2>
</t1>
J'obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<t1>
  <t1c1>x</t1c1>
  <t1c2>y</t1c2>
  <t2>
    <t2c1>z</t2c1>
  </t2>
</t1>
Ayant mis la propriété EnforceConstraints de mon Dataset à true, pourquoi ce dernier ajoute mon élément t2 en fin de mon élément t1 au lieu de l'insérer à l'endroit où on y fait référence?

Sachant que je ne peux modifier le schémas XML, comment pourrai je résoudre mon problème?

Merci d'avance pour votre aide.