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