Bonjour à tous,
Bonne année, à toute la communauté Developez.net.
Donc, pour en revenir à mon problème, je suis actuellement en apprentissage avec le langage Android. Je rencontre un problème avec API DOM, lorsque que j'ajoute des nœuds à un document xml avec DOM.
Tout d'abord, je récupère trois flux RSS que je convertis en document xml de type.
Pas de problème jusqu'ici.org.w3c.dom.Document
Puis je récupére les nœuds Item des deux autres Document xml que je copie dans le premier Document xml, mais quand j’essaie de le faire avec la méthode appendChild, j’obtiens une exception de type DomException, avec le seul message Null.
Voici un extrait de mon code
Les flux RSS sont passés en paramètres à la méthode doInBackground(), dans lequel je suis.
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 for(int i=0;i<params.length;i++) { //Instancier une URL avec son adresse URL url = new URL(params[i]); //Constuire la connection HTTP HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //Convertir le flux en inputStream InputStream stream = connection.getInputStream(); Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(stream); if(document != null){ documentsXml[i] = document; } } NodeList list2 = documentsXml[1].getElementsByTagName("item"); NodeList list3 = documentsXml[2].getElementsByTagName("item"); NodeList racine = documentsXml[0].getElementsByTagName("channel"); channel = (Element) racine.item(0); try { for (int i = 0; i < list2.getLength(); i++) { Element element = (Element) list2.item(i); if (element.getNodeType() == Node.ELEMENT_NODE) { channel.appendChild(element); } } }catch(DOMException e){ Log.i("Element-xml", "Nb fils :" + channel.getChildNodes().getLength()); e.getStackTrace(); }
Les documents sont stockés dans un tableau de type Document. Quand je fais du pas à pas en mode débogage, l’erreur survient, lorsque que la méthode appendChild est invoquée dans la boucle.
L’objet list2 contient bien les nœuds item et le premier document xml documentXml[0] dans le nœud « channel » contient bien des nœuds enfants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for (int i = 0; i < list2.getLength(); i++) { Element element = (Element) list2.item(i); if (element.getNodeType() == Node.ELEMENT_NODE) { channel.appendChild(element); } }
Est-ce que c’est un problème, si les nœuds que je souhaite ajouter porte les mêmes noms, que certains nœuds enfants du nœud « channel ».En effet dans le nœud « channel », il y a déjà plusieurs nœud item, et les nœuds que j’essaie d’ajouter ont le nom item. Pourquoi je n’arrive pas à rajouter des nœuds provenant d’autres document xml dom au premier document xml dans le nœud « channel ».
Pourriez-vous m’aider, car je coince sur ce problème, je ne comprends pas l’exception DomException qui indique seulement null sans autres précisions. Pourant channel n’est pas null, et les nœuds que j’ajoute au channel non plus, quand je suis en mode débogage.
J’aurai besoin de vos lumières, merci par avance.
Bonne années à tous.
Partager