XML
“Extensible Markup Language” (XML) är ett textbaserat märkspråk som används för att representera strukturerad information. Språket är plattformsneutralt.
Någon som tidigare har skrivit HTML kan se likheter i strukturen med taggar, attribut och element. Här nedan ser vi hur XML data kan se ut:
<?xml version="1.0" encoding="UTF-8"?>
<device>
<hostname>LAB01</hostname>
<ipv6>FE80::903A:1C1A:E802:11E4</ipv6>
<status>online</status>
</device>
Den första raden i koden ovan kallas för prolog. I denna definierar vi XML version och teckenkodningsattribut.
Efter prologen har vi kroppen (“body”). XML kroppen innehåller våra taggar som är element för data. Vi namnger själva våra element och kan skapa dessa på 4 olika sätt.
Ett tomt element:
<tag/>
Ett element utan innehåll:
<tag></tag>
Ett element med innehåll:
<tag>Vi lär oss!</tag>
Ett element kan även ha attribut:
<tag myAttribute="value"></tag>
XML är väldigt verbalt och enkelt för oss människor att förstå. Det har däremot sina nackdelar, det kan vara svårare att parsa XML data med skriptspråk som exempelvis Python.
JSON
“JavaScript Object Notation” (JSON) är ett lättviktigt datautbytesformat som härstammar från “object literals” i JavaScript.
I följande stycke har jag skrivit om datan i XML exemplet till JSON format:
{
"device": {
"hostname": "LAB01",
"ipv6": "FE80::903A:1C1A:E802:11E4",
"status": "online"
}
}
Objekten i JSON skrivs som nyckel-värde-par, de olika paren är separerade av kommatecken. Ett objekt kan ha flera par (som exemplet ovan). Datatyper för värden är heltal, strängar, boolesk eller “null” (värde utan bindning till något).
Eftersom att JSON härstammar från JavaScript behöver vi inte heller tänka på någon form av indentering när vi bygger formatet, det används mestadels för mänsklig läsbarhet. Vill vi kan vi skriva datan även så här:
{"device":{"hostname":"LAB01","ipv6":"FE80::903A:1C1A:E802:11E4","status":"online"}}
Men… det är inte lika snyggt och enkelt för en människa att läsa. 🙂
YAML
“YAML Ain’t Markup Language” (YAML) är ett dataserialiseringsformat vars syntax är inspirerad av XML, med ett mål att vara lättläst för människor.
Tidigare exempeldata kan skrivas som:
---
device:
hostname: LAB01
ipv6: FE80::903A:1C1A:E802:11E4
status: online
...
En YAML fil öppnas med tre bindestreck och stängs med tre punkter. Datan skrivs även här som nyckel-värde-par. Datatyper för värden är heltal, strängar, boolesk eller “null” (värde utan bindning till något).
I YAML är det enklare att representera mer komplex data, så som en ordnad lista:
---
lista:
- 1
- 2
- 3
...
Någonting som är viktigt i YAML är blanksteg (indentering). Utan indentering tappar vi språkets hierarki men antalet blanksteg som vi använder har ingen betydelse; det behöver däremot vara konsekvent och skapat av mellanslagstangenten.