Trabalhando com XML em 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); // MicrosoftNeste 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); // MicrosoftSerializando 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);