Bonjour,
j'aimerai modifier un xml contenant plusieurs balises avec un nom identique mais des attributs différents.
voici un exemple du fichier
Ce que j'aimerai faire c'est ajouter une balise <table> avec un nouvel attribut autre que ceux déjà existant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="UTF-8"?> <list> <skill id="0001" levels="" name=""> <table name="#mpConsume">1414</table> <table name="#power">9865</table> </skill> </list>
par exemple ajouter :Pour commencer je regarde si il y a des balises <table> existantes ( contenu dans le noeud <skill> </skill> skillFind) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <table name="#magicLvl">50 65 99</table>Avec ce code, je peux ajouter des balises si aucunes balises <table> n'est detectées ( listTable.isEmpty() ) et supprimer/modifier une balises avec un attribu bien précis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 /* [TABLE] On list les balises <table> [TABLE]*/ List listTable = skillFind.getChildren("table"); if (listTable.isEmpty()){ if (Attributes.magicLvlIsActive()){ table = new Element("table"); skillFind.addContent(table); table.setAttribute("name", "#magicLvl"); table.setText(att.getMagicLvl()); } if (Attributes.mpConsumeIsActive()){ table = new Element("table"); skillFind.addContent(table); table.setAttribute("name", "#mpConsume"); table.setText(att.getMagicLvl()); } if (Attributes.powerIsActive()){ table = new Element("table"); skillFind.addContent(table); table.setAttribute("name", "#power"); table.setText(att.getMagicLvl()); } } Iterator itable = listTable.iterator(); List toBeAdded = new ArrayList(); while(itable.hasNext()) { Element tableFind = (Element)itable.next(); //Modification du power if ( tableFind.getAttributeValue("name").equals("#power") ){ if ( !tableFind.getText().equals(att.getPower()) && att.getPower()!=null ){ tableFind.setText(att.getPower()); } if (!Attributes.powerIsActive()){ itable.remove(); } } //Modification des mpConsume if ( tableFind.getAttributeValue("name").equals("#mpConsume") ){ if ( !tableFind.getText().equals(att.getMpConsume()) && att.getMpConsume()!=null ){ tableFind.setText(att.getMpConsume()); } if (!Attributes.mpConsumeIsActive()){ itable.remove(); } } //Modification des magicLvl if ( tableFind.getAttributeValue("name").equals("#magicLvl") ){ if ( !tableFind.getText().equals(att.getMagicLvl()) && att.getMagicLvl()!=null ){ tableFind.setText(att.getMagicLvl()); } if (!Attributes.mpConsumeIsActive()){ itable.remove(); } } }
Mais je n'arrive pas ajouter une balise <table> avec un attribu autre que ceux déjà existant.
Pouvez-vous m'éclairer svp.
Merci d'avance.
Partager