Bonjour,

j'aimerai modifier un xml contenant plusieurs balises avec un nom identique mais des attributs différents.

voici un exemple du fichier
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>
Ce que j'aimerai faire c'est ajouter une balise <table> avec un nouvel attribut autre que ceux déjà existant.

par exemple ajouter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<table name="#magicLvl">50 65 99</table>
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
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();
			}
		    }
 
}
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.

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.