Bonjour a tous.
J'ai un problème avec un ClassCastException.
J'ai une classe qui travaille avec 1 fichier xml.
Son but est de vider le fichiers xml de tous les enfants de la racine.
Mais ca ne marche evidement pas.
un resumé de ma classe :
Code java : 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 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class ApercuFormulaire { private Element racine; private Document d; /** * @param args */ public static void main(String[] args) { } public void run(){ parse("d:\\monXML.xml"); empty(); transform(); } private void transform() { Source source = new DOMSource(d); File file = new File("D:\\monXML2.xml"); Result resultat = new StreamResult(file); // Configuration du transformer TransformerFactory fabrique = TransformerFactory.newInstance(); Transformer transformer; try { transformer = fabrique.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1"); // Transformation transformer.transform(source, resultat); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } private void empty() { NodeList list = racine.getChildNodes(); for(int i =0; i < list.getLength();i++ ) { Node n = (Node) list.item(i); racine.removeChild(n); } System.out.println(racine.toString()); } private void parse(String fichier) { try { FileInputStream xml_input_file = new FileInputStream(fichier); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringComments(true); DocumentBuilder _builder = factory.newDocumentBuilder(); d = _builder.parse(xml_input_file); racine = d.getDocumentElement(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Et le fichier 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
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 <?xml version="1.0" encoding="ISO-8859-1"?> <observer> <date1 nom="date1" oblig="false" /> <date2 nom="date2" oblig="true" /> <date3 nom="datebis" oblig="false" /> <date4 nom="Date4" oblig="true" /> <date5 nom="Date5" oblig="false" /> <date6 nom="Date6" oblig="true" /> <date7 nom="Date7" oblig="true" /> <date8 nom="Date8" oblig="false" /> <date9 nom="Date9" oblig="true" /> <date10 nom="Dat104" oblig="false" /> <date11 nom="Date11" oblig="false" /> <date12 nom="Date12" oblig="false" /> <nombre1 nom="nombre1" oblig="true" /> <nombre2 nom="nombre2" oblig="false" /> <nombre3 nom="nombre3" oblig="false" /> <nombre4 nom="nombre4" oblig="false" /> <nombre5 nom="nombre5" oblig="false" /> <nombre6 nom="nombre6" oblig="false" /> <nombre7 nom="nombre7" oblig="false" /> <nombre8 nom="nombre8" oblig="false" /> <nombre9 nom="nombre9" oblig="false" /> <nombre10 nom="nombre10" oblig="false" /> <text1 nom="text1" oblig="true" type="champ"> <val /><val /> </text1> <text2 nom="text2" oblig="false" type="champ"> <val /><val /> </text2> <text3 nom="textlist1" oblig="true" type="liste" > <val>valeur 1</val><val>valeur 2</val> </text3> <text4 nom="textlist2" oblig="false" type="liste" > <val>valeur 1</val><val>valeur 2</val> </text4> <text5 nom="text5" oblig="true" type="champ"> <val /><val /> </text5> <text6 nom="text6" oblig="false" type="champ"> <val /><val /> </text6> <text7 nom="text7" oblig="false" type="champ"> <val /><val /> </text7> <text8 nom="text8" oblig="false" type="champ"> <val /><val /> </text8> <text9 nom="text9" oblig="false" type="champ"> <val /><val /> </text9> <text10 nom="text10" oblig="false" type="champ"> <val /><val /> </text10> </observer>
Au final, j'ai mon fichier qui reste inchangé :'(
Si je remplacepar
Code : Sélectionner tout - Visualiser dans une fenêtre à part racine.removeChild(n);j'obtiens ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part d.removeChild(n);Une idée de pourquoi ca ne marche pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Unhandled event loop exception Reason: NOT_FOUND_ERR : Ce noeud n''existe pas dans ce contexte. org.apache.crimson.tree.DomEx: NOT_FOUND_ERR : Ce noeud n''existe pas dans ce contexte. at org.apache.crimson.tree.ParentNode.removeChild(ParentNode.java:500) at com.structis.observer.uiparam.notion.typefiche.ui.view.ApercuFormulaire.empty(ApercuFormulaire.java:89)
EDIT : oups, oublié de mettre la question
Partager