Skip to content

T5.16 Intercambio de información en XML

Obteniendo XML

console.log("Script de captura de XML cargado");

class Capitulo{
    constructor(t, ap, au){
        this.titulo = t;
        this.apartado = ap;
        this.autor = au;
    }
    toString(){return `Tit: ${this.titulo}, apar: ${this.apartado} (autor: ${this.autor})`;}
}

fetch("https://lmsgi.luis-ferreira.es/tutorial.xml")
    .then((response) => {
        console.log(`Paso1: Xml recibido:
            Codigo: ${response.status}
            Estado: ${response.ok? 'OK' : 'ERROR'}`)
        return response.text()
    })
    .then((xmlString) => {
        console.log(`Paso 2: El contenido XML recibido:${xmlString}`);

        const parser = new DOMParser();
        const xmlDoc = parser.parseFromString(xmlString, "text/xml");

        const libro = xmlDoc.querySelectorAll("capitulo");
        let capitulos = []
        libro.forEach((capitulo) => {
            const titulo = capitulo.querySelector("titulo").textContent;
            const apartado = capitulo.querySelector("apartado").textContent;
            const autor = capitulo.querySelector("autor")?.textContent ?? 'Desconocido'
            //console.log(`Tit: ${titulo}, apar: ${apartado} (autor: ${autor})`);
            capitulos.push(new Capitulo(titulo, apartado, autor))
        });
        return capitulos;
    })
    .then( lista => {
        console.log(`Paso 3: El array de capítulos:\n`, lista )

        console.log(`Paso 4: Recorremos el array:`)
        lista.forEach(ele => console.log(ele.toString()) );
    }).catch(err => console.error(`Error: ${err}`));