[ Foro de Javascript ]

Problema con estructura extraña de xml

20-Jan-2021 01:25
Invitado (Sdu Fu)
0 Respuestas

Hola ! Espero estén mu bien .

Escribo por que es la primera vez que hago código y me pidieron leer un xml con datos “nombre”, “ubicación ”, “beneficio” y pintar los datos en una tabla  html (debería pintar una una fila por cada registro del xml).

Esta es la estructura xml que me pasaron:

<datos>
<dato nombre="Inscrito Uno" ubicacion="Mi Hogar Uno" beneficio="Beneficio Total Uno"/>
<dato nombre="Inscrito Dos" ubicacion="Mi Hogar Dos" beneficio="Beneficio Total Dos"/>
<dato nombre="Inscrito Tres" ubicacion="Mi Hogar Tres" beneficio="Beneficio Total Tres"/>
</datos>

Y lo estoy leyendo con este JS:
<script>
       let xmlContent = '';
       let tableBooks = document.getElementById('losinscritos');
       fetch('inscritos_atrib.xml').then((response)=> {
           response.text().then((xml)=>{
               xmlContent = xml;
       
               let parser = new DOMParser();
               let xmlDOM = parser.parseFromString(xmlContent, 'text/xml');
               let books = xmlDOM.querySelectorAll('datos');
               books.forEach(bookXmlNode => {
                   console.log(`LARGO = ${books.length}`)
                   let row = document.createElement('tr');
                   //inscrito
                   let td = document.createElement('td');
                   td.innerText = td.innerText = bookXmlNode.getElementsByTagName("dato")[0].getAttribute("nombre");
                   row.appendChild(td);
                   console.log(`ver ${td.innerText}`)
                   //  ubicación
                   td = document.createElement('td');
                   td.innerText = bookXmlNode.getElementsByTagName("dato")[0].getAttribute("ubicacion");
                   row.appendChild(td);
                   //  beneficio
                   td = document.createElement('td');
                   td.innerText = bookXmlNode.getElementsByTagName("dato")[0].getAttribute("beneficio");
                   row.appendChild(td);
                   tableBooks.appendChild(row);
                });
           });
       });
       </script>



Y me pinta los datos en el html, pero sólo los de  la primera línea del  xml.

Hice un console.log  para ver el largo de “books” y claro, me da 1, me imagino que es por eso que solo pinta sólo la primera linea (creo ). Pero no he podido encontrar el por qué.

Según las personas que me pasan la estructura xml, ésta funciona por que la han usado desde hace tiempo.

Por favor, me pueden dar alguna luz.

Muchísimas gracias de antemano.

Saludos y que estén muy bien




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)