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:
Profils.xml:
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
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) { } } }
Code xml : 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 <?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 xml : 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 <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
Partager