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 gegroepeerde tags. De namen van de tags beschrijven hun inhoud. Hiermee verkrijg je een leesbaar opslag bestand. 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 en attributen zelf zijn verzonnen. Je kunt het bestand daarom zo opmaken, dat je allerlei vormen van gegevens kunt opslaan. Bijvoorbeeld het toevoegen van huisdieren:

<?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>
    <persoon>
        <naam>Piet</naam>
        <leeftijd>30</leeftijd>
        <woonplaats>Amsterdam</woonplaats>
        <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>