XML Validator

Validera XML-syntax och kontrollera välformerhetsfel

Prova ett exempel

XML-inmatning

Körs lokalt · Säkert att klistra in hemligheter

Vad är XML-validering?

En XML-validerare kontrollerar om ett XML-dokument följer de strukturella regler som definieras av XML 1.0-specifikationen (W3C Recommendation, femte upplagan). Som minimum bekräftar den att ett dokument är välformat: det har ett enda rotelement, alla taggar är korrekt nästlade och avslutade, attributvärden är citerade och reserverade tecken använder fördefinierade entiteter. Ett dokument som misslyckas med något av dessa krav får XML-parsers att kasta fel i stället för att tyst producera felaktiga resultat.

Distinktionen mellan välformadhet och giltighet är viktig. Ett välformat XML-dokument uppfyller syntaxreglerna i XML-specifikationen. Ett giltigt XML-dokument går längre: det överensstämmer också med begränsningar definierade i ett externt schema, till exempel en DTD (Document Type Definition), XSD (XML Schema Definition) eller Relax NG-schema. Det här verktyget kontrollerar välformadhet — det första och vanligaste valideringssteget. Utan det kan ingenting längre ned i kedjan fortsätta.

XML-validering fångar fel innan de når produktion. Oavslutade taggar, felmatchade elementnamn, ociterade &-tecken och duplicerade attribut hör till de vanligaste misstagen i handskriven XML. Parsers i olika programspråk hanterar dessa fel på olika sätt: vissa misslyckas tyst, vissa returnerar partiella resultat och vissa kastar undantag. Att köra din XML genom en validerare eliminerar den osäkerheten och ger dig ett tydligt godkänt eller underkänt svar med information om var felet finns.

Varför använda en online-XML-validerare?

Att fånga XML-syntaxfel tidigt förhindrar kaskadfel i applikationer som konsumerar XML-data. En webbläsarbaserad validerare ger omedelbar återkoppling utan att du behöver installera kommandoradsverktyg eller konfigurera IDE-plugins.

Omedelbar feldetektering
Klistra in din XML och få ett godkänt eller underkänt resultat med exakt felplacering på under en sekund. Inget väntan på byggpipelines eller installation av CLI-verktyg.
🔒
Integritetsfokuserad behandling
All parsning och validering sker i din webbläsare via DOMParser API:et. Din XML lämnar aldrig din enhet och skickas aldrig till någon server.
🎯
Precisiv felrapportering
Se exakt rad och kolumn där valideringen misslyckas, tillsammans med en beskrivning av felet. Det går snabbare än att läsa en stack trace från en parser i din applikationskod.
📋
Inget konto eller installation krävs
Öppna sidan, klistra in din XML och se resultatet. Inga registreringsformulär, ingen datorprogramvara, inga webbläsartillägg.

Användningsfall för XML Validator

Frontendutveckling
Validera SVG-filer och XHTML-fragment innan du bäddar in dem i React- eller Vue-komponenter. En enda oavslutad tagg i en SVG kan bryta hela komponentträdet.
Backendteknik
Kontrollera SOAP-svar, XML-RPC-nyttolaster och RSS/Atom-flöden från tredjepartstjänster. Validera råsvaret innan du skriver deserialiseringslogik för att undvika att felsöka parser-undantag vid körning.
DevOps och CI/CD
Verifiera att Maven pom.xml-, .csproj- eller Ant-byggfiler är välformade efter automatiserade ändringar. Ett syntaxfel i en byggkonfiguration kan misslyckas i en hel pipeline med ett kryptiskt felmeddelande.
QA och testning
Validera XML-testfixturor och förväntade utdatafiler innan du kör integrationstester. Felaktiga fixturor orsakar falska negativ som slösar felsökningstid.
Datateknik
Kontrollera XML-exporter från databaser, offentliga dataportar och ETL-pipelines. Att validera strukturen innan du skriver XPath-frågor eller XSLT-transformeringar förhindrar bortkastad tid på trasiga källdata.
Lära sig XML
Studenter som följer W3C XML- eller XSLT-handledningar kan klistra in övningsfiler i valideraren för att kontrollera sin syntax. Felmeddelandena pekar ut exakt vad som är fel, vilket snabbar upp inlärningen.

Välformerhetsregler för XML

XML 1.0-specifikationen definierar en strikt uppsättning syntaxregler. Ett dokument måste uppfylla alla för att anses välformat. Tabellen nedan listar varje regel, vad den kräver och ett korrekt exempel. De flesta valideringsfel kan spåras till en av dessa regler.

RegelKravKorrekt exempel
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"?>

Välformat vs. DTD-giltigt vs. schema-giltigt

XML-validering har tre nivåer. Det här verktyget kontrollerar den första (välformadhet), vilket är en förutsättning för de andra två.

Välformat
Uppfyller XML 1.0-syntaxreglerna: ett enda rotelement, matchade taggar, citerade attribut och korrekt nästning. Alla XML-parsers kontrollerar detta först. Om ett dokument inte är välformat är det inte XML alls.
DTD-giltigt
Överensstämmer med en Document Type Definition som anger vilka element och attribut som tillåts, deras ordning och deras kardinalitet. DTD:er deklareras inline eller via en DOCTYPE-referens. DTD-validering är vanlig i äldre system och XHTML.
Schema-giltigt (XSD / Relax NG)
Överensstämmer med en XML Schema Definition (XSD) eller ett Relax NG-schema. Dessa scheman stöder datatyper (heltal, datum, URI), namnrymder och komplexa innehållsmodeller. XSD-validering är standard i SOAP-webbtjänster, HL7-hälsodata och företagsintegration.

Kodexempel

Validera XML programmatiskt i olika programspråk. Varje exempel kontrollerar välformadhet och returnerar felmeddelandet om dokumentet är felaktigt.

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

Vanliga frågor

Vad är skillnaden mellan välformat och giltigt XML?
Välformat XML följer syntaxreglerna i XML 1.0-specifikationen: ett rotelement, matchade och korrekt nästlade taggar, citerade attribut. Giltigt XML går längre genom att också överensstämma med en DTD eller XSD som definierar vilka element, attribut och datatyper som tillåts. Ett dokument kan vara välformat men inte giltigt om det har korrekt syntax men bryter mot ett schemakrav.
Kan ett XML-dokument vara giltigt men inte välformat?
Nej. Välformadhet är en förutsättning för giltighet. Om ett dokument bryter mot en XML-syntaxregel (oavslutad tagg, ociterat attribut och så vidare) kan parsers inte bygga ett träd från det, vilket innebär att schemavalidering inte ens kan börja. Åtgärda välformerhetsfel först och kontrollera sedan mot ett schema.
Vilka är de vanligaste XML-valideringsfelen?
De fem vanligaste felen är: oavslutade eller felmatchade taggar, ociterade &amp;-tecken i textinnehåll, ociterade attributvärden, saknat rotelement och felaktig versalisering i taggnamn (XML är skiftlägeskänsligt). De flesta orsakas av handskriven XML eller strängsammanslagning i kod i stället för att använda ett korrekt XML-serializeringsverktyg.
Är XML-validering detsamma som XML-linting?
De överlappar men är inte identiska. Validering kontrollerar om ett dokument överensstämmer med XML-specifikationen (välformadhet) eller ett schema (DTD/XSD). Linting går vanligtvis längre genom att också flagga stilproblem: inkonsekvent indragning, oanvända namnrymdsdeklarationer eller redundanta standardattributvärden. xmllint från libxml2 kombinerar båda: --noout kontrollerar välformadhet, medan --schema lägger till XSD-validering.
Hur skiljer sig XML-validering från JSON-validering?
XML har en striktare och mer komplex grammatik än JSON. XML kräver matchande öppnings- och stängningstaggar, stöder attribut, namnrymder, blandat innehåll (text och element tillsammans) och har flera schemaspråk (DTD, XSD, Relax NG, Schematron). JSON-validering kontrollerar matchning av klamrar och parenteser, citerade nycklar och kommaplacering. JSON Schema finns men är enklare än XSD. Ett XML-dokument är typiskt 2–3 gånger större än motsvarande JSON för samma data.
Validerar det här verktyget mot XSD- eller DTD-scheman?
Det här verktyget kontrollerar enbart välformadhet: det bekräftar att din XML följer syntaxreglerna i XML 1.0-specifikationen. Det validerar inte mot externa DTD- eller XSD-scheman. För schemavalidering, använd xmllint --schema på kommandoraden eller lxml i Python, som stöder både XSD och Relax NG.
Varför misslyckas min XML med validering när den ser korrekt ut?
De vanligaste osynliga orsakerna är: en byte order mark (BOM) före XML-deklarationen, ett felaktigt tecken efter det avslutande rotelementet, ett ociterat &amp;-tecken i textinnehåll (använd &amp;amp; i stället) eller ett namnrymdsprefix som användes men aldrig deklarerades. Kopiera din XML till en hex-visare eller kör den genom xmllint --noout för att få exakt byteposition för felet.