Salut.
Notre client souhaite ajouter un espace de nommage à son fichier XML... mais de manière "un peu particulière".
De:
Il souhaite passer à:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <Root schemaVersion="1.1" > <Elt1> <Elt11> <Elt111 Att1111="value1111" Att1112="value1112"> </Elt111> </Elt11> </Elt1> <Elt2> <Elt21 Att211="value211" Att212="value212"> ... </Elt21> </Elt2> </Root>
Et pas plus.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <Root schemaVersion="1.1" xsi:noNamespaceSchemaLocation="aSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Elt1> <Elt11> <Elt111 Att1111="value1111" Att1112="value1112"> </Elt111> </Elt11> </Elt1> <Elt2> <Elt21 Att211="value211" xsi:Att212="value212"> ... </Elt21> </Elt2> </Root>
Nous utilisons XmlBeans pour générer ce fichier.
Rien trouvé de disponible dans les méthodes des classes générées.
Par contre, pour l'espace de nommage, avec XmlCursor, j'ai pu faire ça:
Et ça me convient... sauf qu'impossible de coller le bon préfixe à l'attribut Att212!Code:
1
2
3
4
5
6
7 XmlCursor schemaCursor = myDoc.newCursor(); QName myQName = new QName("http://www.w3.org/2001/XMLSchema-instance", "noNamespaceSchemaLocation", "xsi"); if (schemaCursor.toFirstChild()) { schemaCursor.setAttributeText(myQName, prop.getProperty("SchemaLocation")); } schemaCursor.dispose();
J'ai essayé:
Code:
1
2
3
4
5
6 aNewCursor.insertAttributeWithValue("Att212", "value212"); aNewCursor.insertAttributeWithValue("Att212", "http://www.w3.org/2001/XMLSchema-instance", "value212"); aNewCursor.insertAttributeWithValue("Att212", , "xsi", "value212"); aNewCursor.insertAttributeWithValue("noNamespaceSchemaLocation" ,"http://www.w3.org/2001/XMLSchema-instance", prop.getProperty("SchemaLocation")); aNewCursor.insertAttributeWithValue("Att212", "value212"); aNewCursor.insertNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance").
Sans succès.
Je dois sûrement pas bien comprendre la documentation ou oublier quelque chose, mais même après une bonne nuit de sommeil (tout est relatif...), je ne trouve pas.
Et vous?
Merci d'avance.