Formatter XML
Sformatuj i zminifikuj XML. Waliduj poprawność (well-formed) z linią i kolumną przy błędach.
Wpisz dane powyżej, aby zobaczyć wynik.
Do czego to służy?
XML nadal jest wszędzie — odpowiedzi SOAP, pliki konfiguracyjne, feedy RSS/Atom, markup SVG, wnętrzności OOXML. Gdy musisz przeczytać, zdiffować albo udostępnić kawałek XML-a, różnica między jednoliniową zminifikowaną bryłą a porządnie wciętym drzewem to różnica między zgadywaniem a czytaniem. To narzędzie pretty-printuje dowolny well-formed XML z konfigurowalnym wcięciem albo minifikuje go pod transport, i używa natywnego parsera XML przeglądarki, żeby flagować nieprawidłowości z linią i kolumną tam, gdzie się da.
Kiedy tego użyć
- Inspekcja envelope'a SOAP albo configa XML od dostawcy, który przyszedł jako jedna zminifikowana linia.
- Czyszczenie SVG, żeby path data było jeden element na linię.
- Wycięcie białych znaków pretty-printu przed wysłaniem XML-a po sieci.
- Sanity check, że XML, który wygenerowałeś, jest well-formed, zanim wepchasz go do strict parsera.
- Diff dwóch dokumentów XML — najpierw pretty-print, potem diff drzew obok siebie.
Częste pułapki
- Well-formed ≠ valid. "Well-formed" znaczy, że składnia parsuje (tagi się zgadzają, atrybuty w cudzysłowach, jeden root). "Valid" znaczy zgodność z DTD albo schemą. To narzędzie sprawdza tylko well-formedness — walidacja schematu wymaga pliku schematu.
- Białe znaki bywają znaczące. W
<name> Alice </name>spacje na początku/końcu są częścią wartości (XML domyślnie maxml:space="preserve"). Ponowne wcięcie je zmienia. Jeśli twój XML jest wrażliwy na białe znaki (XHTML<pre>, osadzone bloki kodu), pretty-print to złe narzędzie. - Self-closing vs jawnie pusty.
<br/>i<br></br>są równoważne w XML, ale różnią się w HTML. Formatter normalizuje puste elementy do formy self-closing. - CDATA, komentarze i processing instructions są zachowywane. Ich wewnętrzna treść nie jest reformatowana.
- Namespace'y przeżywają. Deklaracje
xmlns:fooi kwalifikowane nazwyfoo:barrobią round-trip bez modyfikacji. - Kolejność atrybutów może się zmienić. Parser XML nie zachowuje ściśle kolejności atrybutów między narzędziami; jeśli liczysz checksum z XML-a, najpierw kanonikalizuj (XML C14N).
- Dziwactwa parserów przeglądarek. Różne przeglądarki raportują błędy parsowania w różnych formatach. Wyciąganie linia/kolumna jest best-effort i w niektórych przeglądarkach pokaże tylko komunikat.