Skip to content

XML Bestandsformaat

XML lijkt erg op HTML maar is bedoeld voor het opslaan van data in plaats van het weergeven ervan. XML wordt veel gebruikt voor het uitwisselen van data tussen verschillende systemen.

Een XML bestand bestaat uit een aantal regels. Elke regel bevat een aantal waarden die gescheiden zijn door een komma. De eerste regel van het bestand bevat de namen van de kolommen. De volgende regels bevatten de waarden voor elke kolom. Bijvoorbeeld:

<?xml version="1.0" encoding="UTF-8"?>
<gegevens>
    <persoon>
        <naam>Jan</naam>
        <leeftijd>25</leeftijd>
        <woonplaats>Utrecht</woonplaats>
    </persoon>
    <persoon>
        <naam>Piet</naam>
        <leeftijd>30</leeftijd>
        <woonplaats>Amsterdam</woonplaats>
    </persoon>
</gegevens>

Het XML formaat lijkt veel op het HTML formaat. Het verschil is dat de namen van de tags tussen aanhalingstekens staan en dat de waarden van de tags ook XML objecten of arrays kunnen zijn. Bijvoorbeeld:

<?xml version="1.0" encoding="UTF-8"?>
<gegevens>
    <persoon>
        <naam>Jan</naam>
        <leeftijd>25</leeftijd>
        <woonplaats>Utrecht</woonplaats>
        <huisdieren>
            <huisdier>
                <naam>Fikkie</naam>
                <soort>hond</soort>
            </huisdier>
            <huisdier>
                <naam>Minoes</naam>
                <soort>kat</soort>
            </huisdier>
        </huisdieren>
    </persoon>
</gegevens>

Veel platformen hebben een ingebouwde manier om XML data te lezen en te schrijven. In andere platformen zal je gebruik moeten maken van een library.

In JavaScript kan je XML data omzetten naar een JavaScript object met de DOMParser() functie.

let xml = `<?xml version="1.0" encoding="UTF-8"?>
<gegevens>
    <persoon>
        <naam>Jan</naam>
        <leeftijd>25</leeftijd>
        <woonplaats>Utrecht</woonplaats>
    </persoon>
    <persoon>
        <naam>Piet</naam>
        <leeftijd>30</leeftijd>
        <woonplaats>Amsterdam</woonplaats>
    </persoon>
</gegevens>`;
let parser = new DOMParser();
let xmlObject = parser.parseFromString(xml, "text/xml");
console.log(xmlObject.getElementsByTagName("naam")[0].innerHTML); // Jan

Je kan een JavaScript object omzetten naar XML met de XMLSerializer() functie.

let xmlObject = document.createElement("gegevens");
let persoon = document.createElement("persoon");
let naam = document.createElement("naam");
naam.innerHTML = "Jan";
persoon.appendChild(naam);
xmlObject.appendChild(persoon);
let serializer = new XMLSerializer();
let xml = serializer.serializeToString(xmlObject);
console.log(xml); // <gegevens><persoon><naam>Jan</naam></persoon></gegevens>

In p5.js kan je XML data omzetten naar een JavaScript object met de loadXML() functie.

let xml;
function preload() {
    xml = loadXML("data.xml");
}
function setup() {
    let naam = xml.getChild("persoon/naam");
    console.log(naam.getContent()); // Jan
}

Je kan een JavaScript object omzetten naar XML met de saveXML() functie.

let xmlObject = createElement("gegevens");
let persoon = createElement("persoon");
let naam = createElement("naam");
naam.html("Jan");
persoon.child(naam);
xmlObject.child(persoon);
saveXML(xmlObject, "data.xml");

In Python kan je XML data omzetten naar een Python object met de xml.etree.ElementTree.fromstring() functie.

import xml.etree.ElementTree as ET

xml = """<?xml version="1.0" encoding="UTF-8"?>
<gegevens>
    <persoon>
        <naam>Jan</naam>
        <leeftijd>25</leeftijd>
        <woonplaats>Utrecht</woonplaats>
    </persoon>
    <persoon>
        <naam>Piet</naam>
        <leeftijd>30</leeftijd>
        <woonplaats>Amsterdam</woonplaats>
    </persoon>
</gegevens>"""
xmlObject = ET.fromstring(xml)
print(xmlObject.find("persoon/naam").text) # Jan

Je kan een Python object omzetten naar XML met de xml.etree.ElementTree.tostring() functie.

import xml.etree.ElementTree as ET

xmlObject = ET.Element("gegevens")
persoon = ET.SubElement(xmlObject, "persoon")
naam = ET.SubElement(persoon, "naam")
naam.text = "Jan"
xml = ET.tostring(xmlObject)
print(xml) # <gegevens><persoon><naam>Jan</naam></persoon></gegevens>