Bonjour à tous,
Je travaille avec un parser Java (org.apache.xerces.parsers.SAXParser) et j'essaie de transformer les données d'un XML dans un format texte en utilisant une validation XSD pour récupérer des valeurs par défaut.
Exemple de fichier XSD :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Exemple de fichier XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<?xml version="1.0"?> <donnees> <object> <tata>tata1</tata> <toto>toto1</toto> <tutu>tutu1</tutu> </object> <object> <tata>tata2</tata> <toto>toto2</toto> <!-- ******** valeur non renseignée ou pas de balises ********--> <tutu>tutu2</tutu> </object> <object> <tata>tata3</tata> <toto>toto3</toto> <tutu>tutu3</tutu> </object> </donnees>
Je souhaite convertir mon XML dans un fichier texte au format suivant :
Le soucis est que parfois, il est possible que dans mon XML, je ne reçoive pas d'élément <toto> (pas de balise ouvrante/fermante).
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Lorsque mon SAXParser, parse le XML, au 2ème bloc <object>, il ne trouve pas le champ <toto>
Visiblement, cela ne le dérange pas car il va me chercher l'élément <toto> du 3ème object.
ce qui donne un résultat incorrect :
alors que je souhaiterai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Ce que je souhaiterai c'est que dans les 2 cas où <toto> est vide ou null (pas de balise), récupérer la valeur par défaut définie dans le xsd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
J'ai essayé de regarder au niveau du SAXParser mais je ne pense pas que cela soit possible.
Auriez-vous un avis peut être ?
Modification du XSD via XSL, pré-traitement Java...
Merci d'avance

 

 
		
		 
        

 
			
			

 
   


 Utiliser valeur par défaut du XSD pour les éléments facultatifs
 Utiliser valeur par défaut du XSD pour les éléments facultatifs
				
 Répondre avec citation
  Répondre avec citation


 
			


 
  Envoyé par littlesquall
 Envoyé par littlesquall
					
 )
 )
Partager