awesomness UMaD
awesomness UMaD

Reputation: 11

How to make a simple list from a XML file using javascript

xml file

<?xml version="1.0" encoding="UTF-8"?>
<checkers>
    <data>0</data>
    <text>Blank Checker/White square</text>
</checkers>
<checkers>
    <data>3</data>
    <text>black square blank></text>
</checkers>
<checkers>
    <data>0</data>
    <text>Blank Checker/White square</text>
</checkers>

All I want to do is parse out the data and just get a array/list like this:

[0,3,0] from the XML file using HTTPrequest and use it in my javascript code.

Can someone put me in the right direction/send some learning help to me? Thank you.

function loadXMLDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      this.responseText;
    }
  };
  xhttp.open("GET", "data.xml", true);
  xhttp.send();
  console.log(xhttp)


var grid = [0,3,0]

end result needed

Upvotes: 1

Views: 471

Answers (1)

wjatek
wjatek

Reputation: 1006

XML needs to have one root element. Then you can parse it using DOMParser:

const someXML = `<?xml version="1.0" encoding="UTF-8"?>
    <document>
        <checkers>
            <data>0</data>
            <text>Blank Checker/White square</text>
        </checkers>
        <checkers>
            <data>3</data>
            <text>black square blank></text>
        </checkers>
        <checkers>
            <data>0</data>
            <text>Blank Checker/White square</text>
        </checkers>
    </document>`

const parser = new DOMParser()
const parsedXML = parser.parseFromString(someXML, 'text/xml')

const nodes = parsedXML.querySelectorAll('checkers')

const myArray = []
nodes.forEach(node => myArray.push(node.children[0].textContent))

Upvotes: 1

Related Questions