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.
org.w3c.dom.Document
Pas de problème jusqu'ici.

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

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 flux RSS sont passés en paramètres à la méthode doInBackground(), dans lequel je suis.

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.
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);
                    }
                }
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.

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.