Ajout d'une balise avec un attribut différent.
Bonjour,
j'aimerai modifier un xml contenant plusieurs balises avec un nom identique mais des attributs différents.
voici un exemple du fichier
Code:
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:
<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:
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.