XML Validator

XML-syntaxis valideren en controleren op welgevormdheidsfouten

Probeer een voorbeeld

XML-invoer

Draait lokaal · Veilig om secrets te plakken

Wat is XML-validatie?

Een XML-validator controleert of een XML-document voldoet aan de structuurregels uit de XML 1.0-specificatie (W3C Recommendation, vijfde editie). Op zijn minst bevestigt deze xml-validator dat een document welgevormd is: het heeft één rootelement, alle tags zijn correct genest en afgesloten, attribuutwaarden staan tussen aanhalingstekens, en gereserveerde tekens gebruiken voorgedefinieerde entities. Een document dat een van deze controles niet doorstaat, laat XML-parsers fouten gooien in plaats van stilletjes onjuiste uitvoer te produceren.

Het onderscheid tussen welgevormdheid en geldigheid is belangrijk. Een welgevormd XML-document voldoet aan de syntaxisregels van de XML-specificatie zelf. Een geldig XML-document gaat verder: het voldoet ook aan beperkingen uit een extern schema, zoals een DTD (Document Type Definition), XSD (XML Schema Definition) of Relax NG-schema. Dit hulpmiddel controleert welgevormdheid — de eerste en meest voorkomende validatiestap. Zonder welgevormdheid kan niets daarna verdergaan.

XML-validatie pakt fouten op voordat ze de productie bereiken. Niet-afgesloten tags, niet-overeenkomende elementnamen, niet-geëscapete ampersands en dubbele attributen horen bij de meest voorkomende fouten in handmatig bewerkte XML. Parsers in verschillende talen gaan hier anders mee om: sommige falen stilletjes, sommige geven gedeeltelijke resultaten terug en sommige gooien uitzonderingen. Uw XML eerst door een validator halen elimineert deze onduidelijkheid en geeft u een duidelijk geslaagd of mislukt antwoord met informatie over de foutlocatie.

Waarom een online XML-validator gebruiken?

XML-syntaxisfouten vroeg opsporen voorkomt kettingreacties in applicaties die XML-data verwerken. Een browsergebaseerde validator geeft directe feedback zonder opdrachtregeltools te installeren of IDE-plugins te configureren.

Directe foutdetectie
Plak uw XML en krijg binnen een seconde een geslaagd of mislukt resultaat met de exacte foutlocatie. Geen wachten op buildpipelines of het opzetten van CLI-tools.
🔒
Privacy-first verwerking
Alle parsing en validatie vindt plaats in uw browser via de DOMParser API. Uw XML verlaat uw machine nooit en wordt nooit naar een server verzonden.
🎯
Nauwkeurige foutrapportage
Zie de exacte regel en kolom waar de validatie mislukt, samen met een beschrijving van de fout. Dit is sneller dan een stack trace lezen van een parser in uw applicatiecode.
📋
Geen account of installatie vereist
Open de pagina, plak uw XML en zie het resultaat. Geen aanmeldingsformulieren, geen desktopsoftware, geen browserextensies nodig.

Gebruiksscenario's voor XML Validator

Frontend-ontwikkeling
Valideer SVG-bestanden en XHTML-fragmenten voordat u ze insluit in React- of Vue-componenten. Eén niet-afgesloten tag in een SVG kan de hele componentboom breken.
Backend-engineering
Controleer SOAP-responses, XML-RPC-payloads en RSS/Atom-feeds van externe API's. Valideer de ruwe response voordat u deserialiseringslogica schrijft om te voorkomen dat u parser-uitzonderingen debugt tijdens runtime.
DevOps en CI/CD
Controleer of Maven pom.xml-, .csproj- of Ant-buildbestanden welgevormd zijn na geautomatiseerde bewerkingen. Een syntaxisfout in een buildconfiguratie kan een hele pipeline laten mislukken met een cryptische foutmelding.
QA en testen
Valideer XML-testfixtures en verwachte-uitvoerbestanden voordat integratietests worden uitgevoerd. Misvormde fixtures veroorzaken valse negatieven die debugtijd verspillen.
Data-engineering
Controleer XML-exports van databases, open-dataportalen van de overheid en ETL-pipelines. Het valideren van de structuur voordat u XPath-query's of XSLT-transformaties schrijft, voorkomt verspilde moeite aan defecte brondata.
XML leren
Studenten die W3C XML- of XSLT-tutorials volgen, kunnen oefenbestanden in de validator plakken om hun syntaxis te controleren. De foutmeldingen wijzen naar het exacte probleem, wat de leercyclus versnelt.

XML-welgevormdheidsregels

De XML 1.0-specificatie definieert een strikte set syntaxisregels. Een document moet aan al deze regels voldoen om als welgevormd te worden beschouwd. De onderstaande tabel geeft elke regel, de vereiste en een correct voorbeeld. De meeste validatiefouten zijn terug te voeren op een van deze regels.

RegelVereisteCorrect voorbeeld
Single root elementDocument must have exactly one root<root>...</root>
Matched tagsEvery opening tag needs a closing tag<p>text</p>
Proper nestingTags must close in reverse order of opening<a><b>...</b></a>
Quoted attributesAttribute values must be in single or double quotes<el attr="val"/>
Entity escapingReserved characters must use predefined entities&lt; &gt; &amp; &quot; &apos;
Case sensitivityTag names are case-sensitive: <A> is not </a><Book>...</Book>
No duplicate attributesEach attribute name must appear once per element<el a="1" b="2"/>
Valid XML declarationIf present, must be the very first line<?xml version="1.0"?>

Welgevormd vs. DTD-geldig vs. schema-geldig

XML-validatie kent drie niveaus. Dit hulpmiddel controleert het eerste (welgevormdheid), wat een vereiste is voor de andere twee.

Welgevormd
Voldoet aan de XML 1.0-syntaxisregels: één root, overeenkomende tags, geciteerde attributen, correcte nesting. Elke XML-parser controleert dit als eerste. Als een document niet welgevormd is, is het überhaupt geen XML.
DTD-geldig
Voldoet aan een Document Type Definition die aangeeft welke elementen en attributen zijn toegestaan, in welke volgorde en met welke kardinaliteit. DTD's worden inline gedeclareerd of via een DOCTYPE-referentie. DTD-validatie is gebruikelijk in legacy-systemen en XHTML.
Schema-geldig (XSD / Relax NG)
Voldoet aan een XML Schema Definition (XSD) of Relax NG-schema. Deze schema's ondersteunen datatypen (integer, date, URI), namespaces en complexe inhoudsmodellen. XSD-validatie is standaard in SOAP-webservices, HL7-zorgdata en enterprise-integratie.

Codevoorbeelden

Valideer XML programmatisch in verschillende talen. Elk voorbeeld controleert welgevormdheid en geeft de foutmelding terug als het document misvormd is.

JavaScript (DOMParser)
function validateXML(xmlString) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xmlString, 'application/xml')
  const error = doc.querySelector('parsererror')
  if (error) {
    return { valid: false, message: error.textContent }
  }
  return { valid: true, message: 'Well-formed XML' }
}

validateXML('<root><item>hello</item></root>')
// → { valid: true, message: "Well-formed XML" }

validateXML('<root><item>hello</root>')
// → { valid: false, message: "Opening and ending tag mismatch..." }
Python
import xml.etree.ElementTree as ET

def validate_xml(xml_string):
    try:
        ET.fromstring(xml_string)
        return True, "Well-formed XML"
    except ET.ParseError as e:
        return False, str(e)

valid, msg = validate_xml('<root><item>hello</item></root>')
# → (True, "Well-formed XML")

valid, msg = validate_xml('<root><item>hello</root>')
# → (False, "mismatched tag: line 1, column 27")

# With lxml — also supports XSD schema validation
from lxml import etree
schema = etree.XMLSchema(etree.parse('schema.xsd'))
doc = etree.fromstring(b'<root><item>hello</item></root>')
schema.validate(doc)  # → True or False
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func validateXML(raw string) error {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    for {
        _, err := decoder.Token()
        if err != nil {
            if err.Error() == "EOF" {
                return nil
            }
            return err
        }
    }
}

func main() {
    err := validateXML("<root><item>hello</item></root>")
    fmt.Println(err) // → <nil>

    err = validateXML("<root><item>hello</root>")
    fmt.Println(err) // → XML syntax error: unexpected end element </root>
}
CLI (xmllint)
# Check well-formedness (part of libxml2, pre-installed on macOS/Linux)
xmllint --noout document.xml
# Exit code 0 = valid, non-zero = errors printed to stderr

# Validate against an XSD schema
xmllint --noout --schema schema.xsd document.xml

# Validate against a DTD
xmllint --noout --dtdvalid schema.dtd document.xml

# Validate from stdin
echo '<root><unclosed>' | xmllint --noout -
# → :1: parser error : Premature end of data in tag unclosed line 1

Veelgestelde vragen

Wat is het verschil tussen welgevormde en geldige XML?
Welgevormde XML volgt de syntaxisregels van de XML 1.0-specificatie: één rootelement, overeenkomende en correct geneste tags, geciteerde attributen. Geldige XML gaat verder door ook te voldoen aan een DTD- of XSD-schema dat aangeeft welke elementen, attributen en datatypen zijn toegestaan. Een document kan welgevormd maar niet geldig zijn als het correcte syntaxis heeft maar een schemabeperking overtreedt.
Kan een XML-document geldig zijn maar niet welgevormd?
Nee. Welgevormdheid is een vereiste voor geldigheid. Als een document een XML-syntaxisregel overtreedt (niet-afgesloten tag, niet-geciteerd attribuut, enz.), kunnen parsers er geen structuur van opbouwen, zodat schema-validatie niet eens kan beginnen. Los welgevormdheidsfouten eerst op en controleer daarna het schema.
Wat zijn de meest voorkomende XML-validatiefouten?
De vijf meest voorkomende fouten zijn: niet-afgesloten of niet-overeenkomende tags, niet-geëscapete ampersands in tekstinhoud, niet-geciteerde attribuutwaarden, ontbrekend rootelement en onjuiste hoofdlettergebruik in tagnamen (XML is hoofdlettergevoelig). De meeste hiervan worden veroorzaakt door handmatig XML bewerken of door stringaaneenschakeling in code in plaats van een XML-serializer te gebruiken.
Is XML-validatie hetzelfde als XML-linting?
Ze overlappen maar zijn niet identiek. Validatie controleert of een document voldoet aan de XML-specificatie (welgevormdheid) of een schema (DTD/XSD). Linting gaat doorgaans verder door ook stijlproblemen te signaleren: inconsistente inspringing, ongebruikte namespace-declaraties of overbodige standaard-attribuutwaarden. xmllint van libxml2 combineert beide: --noout controleert welgevormdheid, terwijl --schema XSD-validatie toevoegt.
Hoe verschilt XML-validatie van JSON-validatie?
XML heeft een strengere en complexere grammatica dan JSON. XML vereist overeenkomende openings- en sluitingstags, ondersteunt attributen, namespaces, gemengde inhoud (tekst en elementen door elkaar) en heeft meerdere schematalen (DTD, XSD, Relax NG, Schematron). JSON-validatie controleert accolade- en haakjesafsluiting, geciteerde sleutels en kommaplaatsing. JSON Schema bestaat maar is eenvoudiger dan XSD. Een XML-document is doorgaans 2 tot 3 keer groter dan de equivalent JSON voor dezelfde data.
Valideert dit hulpmiddel tegen XSD- of DTD-schema's?
Dit hulpmiddel controleert alleen welgevormdheid: het bevestigt dat uw XML voldoet aan de syntaxisregels van de XML 1.0-specificatie. Het valideert niet tegen externe DTD- of XSD-schema's. Gebruik voor schema-validatie xmllint --schema op de opdrachtregel, of lxml in Python, dat zowel XSD als Relax NG ondersteunt.
Waarom mislukt mijn XML-validatie terwijl het er correct uitziet?
De meest voorkomende onzichtbare oorzaken zijn: een byte-ordermarkering (BOM) vóór de XML-declaratie, een ongewenst teken na de afsluitende root-tag, een niet-geëscapete ampersand in tekstinhoud (gebruik &amp; in plaats daarvan), of een namespace-prefix die is gebruikt maar nooit gedeclareerd. Kopieer uw XML naar een hex-viewer of gebruik xmllint --noout om de exacte byte-offset van de fout te vinden.