Trabalhando com XML - JavaScript

Um dos formatos populares para descrição de dados é o XML, e o JavaScript fornece ferramentas para trabalhar com ele.

Transformando string em XML

Para criar objetos XML a partir de uma string contendo dados em formato XML, utiliza-se o objeto DOMParser. Seu método parseFromString() aceita a string como primeiro argumento e o tipo MIME (geralmente "text/xml") como segundo argumento. Se a string fornecida contiver um código XML válido, o método retornará um objeto do tipo Document, que conterá o XML analisado. Para selecionar dados específicos do documento XML resultante, podem ser utilizados métodos padrão de seleção de elementos DOM, como querySelector().

Por exemplo, considere o seguinte programa:

const xmlString = `<?xml version="1.0" encoding="UTF-8" ?> 
    <users>
        <user name="Tom" age="39">
            <company>
                <title>Microsoft</title>
            </company>
        </user>
        <user name="Bob" age="43">
            <company>
                <title>Google</title>
            </company>
        </user>
    </users>`;
 
const domParser = new DOMParser();
const xmlDOM = domParser.parseFromString(xmlString, "text/xml");
// Seleciona o primeiro elemento user
const firstUser = xmlDOM.querySelector("user");
console.log(firstUser.getAttribute("name"));                  // Tom
console.log(firstUser.getAttribute("age"));                   // 39
console.log(firstUser.querySelector("title").textContent);    // Microsoft

Neste exemplo, o documento XML é definido como a string xmlString. Mas, inicialmente, isso é apenas uma string, não um documento XML. Para analisar a string e transformá-la em um documento XML, criamos um objeto DOMParser e executamos seu método parseFromString() passando a string:

const domParser = new DOMParser();
const xmlDOM = domParser.parseFromString(xmlString, "text/xml");

Após obter o documento XML, selecionamos o primeiro elemento user com o método querySelector:

const firstUser = xmlDOM.querySelector("user");

Depois, podemos acessar o conteúdo do elemento user e seus elementos aninhados e atributos:

console.log(firstUser.getAttribute("name"));                  // Tom
console.log(firstUser.getAttribute("age"));                   // 39
console.log(firstUser.querySelector("title").textContent);    // Microsoft

Serializando Documento XML para string

Para a conversão inversa - de um documento XML para uma string - utiliza-se o objeto XMLSerializer. Este objeto fornece o método serializeToString(), que recebe um objeto XML e retorna o XML na forma de uma string. Por exemplo:

const xmlString = `<?xml version="1.0" encoding="UTF-8" ?> 
    <users>
        <user name="Tom" age="39">
            <company>
                <title>Microsoft</title>
            </company>
        </user>
        <user name="Bob" age="43">
            <company>
                <title>Google</title>
            </company>
        </user>
    </users>`;
 
// Converte a string em XML
const domParser = new DOMParser();
const xmlDOM = domParser.parseFromString(xmlString, "text/xml");
// Converte de volta de XML para string
const xmlSerializer = new XMLSerializer();
const xmlString2 = xmlSerializer.serializeToString(xmlDOM);
console.log(xmlString2);

Já que um documento HTML também é um documento XML, podemos serializar uma página HTML ou parte dela em uma string. Por exemplo, para converter a página web atual em uma string:

const xmlSerializer = new XMLSerializer();
const htmlString = xmlSerializer.serializeToString(document);
console.log(htmlString);
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com