Copie et suppresion d'un element dans un fichier xml
Bonjour, dans le cadre de gestion de profils d'une application je souhaiterais que lorsque je supprime un profil et bien celui ci soit copier dans un autre fichier xml historique, hors cela me copie tous les elements du fichier et me modifie bien le profil concerné voici mon code:
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| public class DeleteProfil {
private static Document document = null;
private static Element racine = null;
private static String nomSupProf = null;
private static Element profilASupprimer = null;
public DeleteProfil(String supProf) {
nomSupProf = supProf;
try {
lireFichier("profils.xml");
supprElement();
enregistre("Profils.xml");
mettreAJour(profilASupprimer);
enregistre("historique\\ProfilsHisto.xml");
} catch (Exception e) {
System.out.println("Erreur de suppression de profil");
e.printStackTrace();
}
}
// Fonction qui ouvre le fichier
static void lireFichier(String fichier) throws Exception {
SAXBuilder sxb = new SAXBuilder();
document = sxb.build(new File(fichier));
racine = document.getRootElement();
}
// Fonction qui selectionne les informations du profil à supprimer
@SuppressWarnings("unchecked")
static void supprElement() {
// On supprime le fichier bat
File bat = new File(nomSupProf + ".bat");
bat.delete();
// On crée un nouveau filtre
Filter filtre = new Filter() {
private static final long serialVersionUID = -2061854728648947066L;
// On défini les propriétés du filtre à l'aide
// de la méthode matches
public boolean matches(Object ob) {
// 1 ère vérification : on vérifie que les objets
// qui seront filtrés sont bien des Elements
if (!(ob instanceof Element)) {
return false;
}
// On crée alors un Element sur lequel on va faire les
// vérifications suivantes.
Element element = (Element) ob;
// On crée une variable qui va nous permettre de vérifier
// la condition de nom
int verifNom = 0;
// 2 ème vérification: on vérifie le nom
if (element.getChild("nom").getTextTrim().equals(nomSupProf)) {
verifNom = 1;
}
// Si nos conditions sont remplies on retourne true, false sinon
if (verifNom == 1) {
return true;
}
return false;
}
};// Fin du filtre
// getContent va utiliser notre filtre pour créer une liste répondant
// à nos critères.
List<Element> resultat = racine.getContent(filtre);
Iterator<Element> i = resultat.iterator();
while (i.hasNext()) {
Element courant = (Element) i.next();
profilASupprimer = (Element) courant.clone();
i.remove();
}
}
static void mettreAJour(Element el) {
{
Calendar calen = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat(
"EEEEEE_dd_MMMMMMM_yyyy");
String dt = sdf.format(calen.getTime());
Element profil = new Element("profil_supprimé_le_" + dt);
racine.addContent(profil);
Element nom = new Element("nom");
nom.setText(el.getChildText("nom"));
profil.addContent(nom);
Element type = new Element("type");
type.setText(el.getChildText("type"));
profil.addContent(type);
Element icon = new Element("icone");
icon.setText(el.getChildText("icone"));
profil.addContent(icon);
Element ip = new Element("IP");
ip.setText(el.getChildText("IP"));
profil.addContent(ip);
Element mask = new Element("Masque_sous_réseau");
mask.setText(el.getChildText("Masque_sous_réseau"));
profil.addContent(mask);
Element pass = new Element("Passerelle");
pass.setText(el.getChildText("Passerelle"));
profil.addContent(pass);
Element dnsPref = new Element("DNS_préféré");
dnsPref.setText(el.getChildText("DNS_préféré"));
profil.addContent(dnsPref);
Element dnsAux = new Element("DNS_Auxiliaire");
dnsAux.setText(el.getChildText("DNS_Auxiliaire"));
profil.addContent(dnsAux);
}
}
static void enregistre(String fichier) {
try {
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output(document, new FileOutputStream(fichier));
} catch (IOException e) {
}
}
} |
Profils.xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?xml version="1.0" encoding="UTF-8"?>
<profils>
<profil>
<nom>effef</nom>
<type>Connexion au réseau local 2</type>
<icone>icon_bureau.png</icone>
<IP>...</IP>
<Masque_sous_réseau>...</Masque_sous_réseau>
<Passerelle>...</Passerelle>
<DNS_préféré>...</DNS_préféré>
<DNS_Auxiliaire>...</DNS_Auxiliaire>
</profil>
<profil>
<nom>grgrg</nom>
<type>Connexion réseau sans fil</type>
<icone>icon_boucl.png</icone>
<IP>...</IP>
<Masque_sous_réseau>...</Masque_sous_réseau>
<Passerelle>...</Passerelle>
<DNS_préféré>...</DNS_préféré>
<DNS_Auxiliaire>...</DNS_Auxiliaire>
</profil>
</profils> |
Et ProfilsHisto.xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <profils>
<profil>
<nom>grgrg</nom>
<type>Connexion réseau sans fil</type>
<icone>icon_boucl.png</icone>
<IP>...</IP>
<Masque_sous_réseau>...</Masque_sous_réseau>
<Passerelle>...</Passerelle>
<DNS_préféré>...</DNS_préféré>
<DNS_Auxiliaire>...</DNS_Auxiliaire>
</profil>
<profil_supprimé_le_mardi_24_mars_2009>
<nom>effef</nom>
<type>Connexion au réseau local 2</type>
<icone>icon_bureau.png</icone>
<IP>...</IP>
<Masque_sous_réseau>...</Masque_sous_réseau>
<Passerelle>...</Passerelle>
<DNS_préféré>...</DNS_préféré>
<DNS_Auxiliaire>...</DNS_Auxiliaire>
</profil_supprimé_le_mardi_24_mars_2009>
</profils> |
Merci de votre aide