XML Formatter

Formatera och pretty-printa XML med syntaxmarkering

Prova ett exempel

XML-indata

Formaterad XML

Körs lokalt · Säkert att klistra in hemligheter
Formaterad XML visas här…

Vad är XML-formatering?

XML-formatering (även kallad XML pretty-printing eller XML-försköning) är processen att lägga till konsekvent indragning och radbrytningar i ett XML-dokument så att dess hierarkiska struktur blir synlig. Rå XML från API:er, konfigurationsgeneratorer eller serialiserare levereras ofta som en enda rad utan blanksteg mellan taggar. En XML-formaterare parsar dokumentet till ett träd och serialiserar det sedan om med förutsägbara avstånd. Resultatet är visuellt klart och mycket lättare att förstå, utan att dokumentets logiska innehåll förändras på något sätt. Det är en snabb och enkel åtgärd som sparar avsevärd tid vid felsökning och kodgranskning.

XML 1.0-specifikationen (W3C Recommendation, femte upplagan) definierar en strikt grammatik där varje öppningstagg måste ha en matchande stängningstagg eller vara självstängande, attribut måste vara citerade och fem tecken (<, >, &, ", ') kräver entitetskodning. En formaterare måste respektera dessa regler och samtidigt bara infoga insignifikant blanksteg som inte förändrar dokumentets informationsmängd (infoset). En korrekt förståelse av dessa regler garanterar att det formaterade XML-dokumentet förblir giltigt och kan bearbetas av alla regelrätta XML-processorer och parsningsbibliotek.

Formaterad XML är enklare att läsa vid kodgranskning, enklare att diff:a i versionshantering och enklare att felsöka när en tjänst returnerar oväntad data. Formateringsoperationen är förlustfri: dokumentets logiska innehåll förblir identiskt — bara presentationen förändras. Verktyg som git diff och pull request-plattformar visar bara ändrade rader — konsekvent indragen XML säkerställer att dessa diff:ar speglar verkliga ändringar, inte omformateringsbrus. Team som konsekvent tillämpar ett gemensamt formateringsstil lägger mindre tid på att förstå dokumentstrukturer och mer tid på faktiskt produktivt arbete med funktionalitet och logik.

Before · xml
After · xml
<catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date></book></catalog>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
  </book>
</catalog>

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

Att formatera XML för hand är felbenäget och långsamt, särskilt för dokument med djup nästning eller blandade namnrymder. En webbläsarbaserad formaterare ger dig ett formaterat resultat på under en sekund, oavsett filstorlek. Till skillnad från skrivbordsprogram eller kommandoradsverktyg krävs ingen installation eller konfiguration — öppna bara sidan och börja arbeta direkt utan förberedelser.

Omedelbar pretty-print
Klistra in eller skriv XML och få indragen utdata direkt. Inget väntan på att ett CLI-verktyg ska installeras eller ett byggsteg ska köras.
🔒
Integritetsfokuserad behandling
All parsning och formatering sker i din webbläsare via DOMParser API:et. Din XML lämnar aldrig din enhet och skickas aldrig till någon server.
🎨
Konfigurerbar indragning
Välj mellan 2 mellanslag, 4 mellanslag eller tabb-indragning för att matcha ditt projekts kodningsstandarder utan att redigera konfigurationsfiler.
📋
Inget konto eller installation krävs
Öppna sidan, klistra in din XML och kopiera resultatet. Inga registreringsformulär, ingen datorprogramvara, inga webbläsartillägg.

Användningsfall för XML Formatter

Frontendutveckling
Inspektera SVG-uppmärkning eller XHTML-fragment som returneras av ett CMS. Formatering av rådatan låter dig snabbt hitta specifika attribut och nästlade grupper.
Backendteknik
Felsök SOAP-svar, RSS-flöden eller XML-RPC-nyttolaster från tredjepartstjänster. Pretty-printad utdata låter dig spåra saknade element eller felaktiga namnrymder.
DevOps och CI/CD
Läs Maven pom.xml-filer, Ant-byggskript eller .csproj-projektfiler som har genererats maskinellt utan indragning. Formatera dem innan du checkar in för att hålla diff:arna rena.
QA och testning
Jämför förväntade och faktiska XML-nyttolaster i integrationstester. Formatering av båda sidor till samma indragningsstil eliminerar falska negativ orsakade av blankstegsskillnader.
Datateknik
Inspektera XML-exporter från databaser, ETL-pipelines eller offentliga dataportar. Formaterad XML avslöjar poststrukturen innan du skriver en XSLT-transform eller XPath-fråga.
Lära sig XML
Studenter som arbetar med W3C XML-handledningar kan klistra in övningsfiler i formateraren för att verifiera att deras nästning och attributsyntax är korrekt.

XML-fördefinierad entitetsreferens

XML reserverar fem tecken för sin syntax. När dessa tecken förekommer som bokstavligt textinnehåll eller attributvärden måste de ersättas med fördefinierade entitetsreferenser. En korrekt formaterare bevarar dessa entiteter under pretty-printing.

TeckenRoll i XMLEntitet
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

XML-indragningsstilar jämförda

Det finns ingen enskild standard för XML-indragning. Valet beror på ditt teams konventioner och verktygen i din pipeline. Här är de tre vanligaste stilarna.

2 mellanslag (rekommenderas)
Det vanligaste valet för webbrelaterad XML: SVG, XHTML, SOAP, Spring-konfiguration. Håller djupt nästlade dokument kompakta. Används som standard i de flesta online-formaterare och IDE:er.
4 mellanslag
Föredraget i Java-ekosystem (Maven, Ant, Android-manifester) där filer sällan överstiger 3–4 nivåer av nästning. Matchar standardindragningen för Java- och C#-kod.
Tabb-tecken
Låter varje utvecklare ange sin egen visuella bredd i sin editor. Vanligt i äldre projekt och vissa Microsoft-verktyg (.csproj, .nuspec). Ger mindre filstorlek än mellanslag.

Kodexempel: Formatera XML programmatiskt

När du behöver formatera XML inuti ett skript eller en byggprocess har varje större programspråk ett inbyggt alternativ eller ett alternativ i standardbiblioteket. I Python kan du använda modulen xml.dom.minidom eller lxml, i Java erbjuder javax.xml.transform stöd för snygg utskrift, och i Node.js finns bibliotek som xmldom eller prettier tillgängliga. Nedan finns fungerande exempel du kan kopiera direkt.

JavaScript (DOM API)
const raw = '<root><item>hello</item></root>'
const parser = new DOMParser()
const doc = parser.parseFromString(raw, 'application/xml')
const serializer = new XMLSerializer()
const xml = serializer.serializeToString(doc)

// Indent with XSLT (browser-native approach)
const xslt = new DOMParser().parseFromString(`
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="node()|@*">
      <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
    </xsl:template>
  </xsl:stylesheet>`, 'application/xml')

const proc = new XSLTProcessor()
proc.importStylesheet(xslt)
const formatted = proc.transformToDocument(doc)
console.log(new XMLSerializer().serializeToString(formatted))
// → <root>\n  <item>hello</item>\n</root>
Python
import xml.dom.minidom

raw = '<root><item>hello</item><item>world</item></root>'
dom = xml.dom.minidom.parseString(raw)
print(dom.toprettyxml(indent='  '))
# → <?xml version="1.0" ?>
# → <root>
# →   <item>hello</item>
# →   <item>world</item>
# → </root>

# With lxml (handles namespaces, XSD, large files)
from lxml import etree
tree = etree.fromstring(raw.encode())
print(etree.tostring(tree, pretty_print=True).decode())
Go
package main

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

func formatXML(raw string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    var out strings.Builder
    encoder := xml.NewEncoder(&out)
    encoder.Indent("", "  ")
    for {
        tok, err := decoder.Token()
        if err != nil {
            break
        }
        encoder.EncodeToken(tok)
    }
    encoder.Flush()
    return out.String(), nil
}
// formatXML("<a><b>1</b></a>") → "<a>\n  <b>1</b>\n</a>"
CLI (xmllint)
# Format XML file with xmllint (part of libxml2, pre-installed on macOS/Linux)
xmllint --format input.xml > formatted.xml

# Format from stdin
echo '<a><b>1</b></a>' | xmllint --format -
# → <?xml version="1.0"?>
# → <a>
# →   <b>1</b>
# → </a>

# Validate and format at the same time
xmllint --format --schema schema.xsd input.xml

Vanliga frågor

Ändrar formatering av XML dokumentets innebörd?
Nej. XML-formatering lägger bara till eller tar bort insignifikant blanksteg mellan taggar. XML Information Set (infoset) förblir identisk — elementnamn, attribut, värden och hierarki förblir exakt oförändrade. Ett undantag: om ditt schema använder xml:space="preserve" på vissa element bör en formaterare lämna dessa element orörda — och det här verktyget respekterar det.
Vad är skillnaden mellan XML-formatering och XML-validering?
Formatering lägger till indragning och radbrytningar för att göra XML läsbar. Validering kontrollerar om dokumentet överensstämmer med ett schema (XSD, DTD eller RelaxNG). Ett dokument kan vara välformat och syntaktiskt korrekt men ändå ogiltigt mot sitt schema om elementinnehållet eller strukturen inte uppfyller schemats krav. Använd det här verktyget för läsbarhet och XML Validator-verktyget för schemaöverensstämmelse.
Kan jag formatera XML med namnrymder?
Ja. Webbläsarens DOMParser hanterar XML-namnrymder inbyggt. Namnrymdsprefixer, standardnamnrymdsdeklarationer (xmlns) och kvalificerade attributnamn bevaras alla under formatering. Formateraren lägger inte till, tar inte bort eller byter namn på några namnrymdsbindningar.
Hur stor XML-fil kan jag formatera i webbläsaren?
Webbläsarbaserad formatering fungerar bra för dokument upp till ungefär 10 MB. Utöver det förbrukar DOM-trädet betydande minne och användargränssnittet kan bli oresponsivt. För mycket stora filer, använd ett CLI-verktyg som xmllint --format, som behandlar XML som en ström.
Varför har min formaterade XML fått en XML-deklaration tillagd?
Vissa formaterare lägger till <?xml version="1.0"?> vid serialisering av DOM-trädet. Denna deklaration är valfri i XML 1.0 när kodningen är UTF-8. Om du inte vill ha den, ta bort den första raden från utdata. Deklarationen påverkar inte parsning av någon konfom XML-processor.
Är XML-formatering detsamma som XML-minifiering?
De är motsatta operationer. Formatering lägger till blanksteg för att förbättra läsbarheten. Minifiering tar bort allt icke-nödvändigt blanksteg för att minska filstorleken. Båda operationerna är förlustfria med avseende på XML-infoset. Om du behöver minifiera XML, använd XML Minifier-verktyget.
Vad är skillnaden mellan XML- och HTML-formatering?
XML är strikt: varje tagg måste stängas, attributvärden måste citeras och dokumentet måste ha exakt ett rotelement. HTML (specifikt HTML5) är tolerant: valfria stängningstaggar, ociterade attribut och tomma element som &lt;br&gt; är alla giltiga. En XML-formaterare avvisar ogiltig XML, medan en HTML-formaterare tolererar syntax som XML inte tillåter.