Formater i walidator XML
Wklej XML, aby wciąć go na 2 spacje, 4 spacje lub tabulatory, zmieścić w jednym wierszu albo dowiedzieć się, dlaczego się nie analizuje. Poprawnie sformułowany XML wraca z liczbą elementów, głębokością zagnieżdżenia i rozmiarem; błędny XML wraca z komunikatem parsera. Za darmo, bez rejestracji, a XML nigdy nie opuszcza Twojej przeglądarki.
Tryb
Jak korzystać z formatera XML
- 1. Wybierz tryb. Formatuj wcina kod; Minifikuj usuwa białe znaki między elementami.
- 2. Wybierz wcięcie. Przy formatowaniu wybierz 2 spacje, 4 spacje lub tabulator.
- 3. Wklej XML i naciśnij przycisk. Wynik pojawi się poniżej z trzema liczbami: elementami, maksymalną głębokością (korzeń to poziom 1) i rozmiarem wyniku w znakach.
- 4. Popraw błędy, jeśli się pojawią. Jeśli XML nie jest poprawnie sformułowany, nic nie zostanie wygenerowane, a parser przeglądarki opisze, co znalazł. Popraw XML i naciśnij przycisk ponownie.
Poprawnie sformułowany a poprawny
Dwie różne rzeczy bywają nazywane „walidacją” XML. Dokument jest poprawnie sformułowany, jeśli przestrzega reguł składni Zalecenia XML 1.0 W3C; jest poprawny, jeśli dodatkowo spełnia schemat, taki jak DTD lub XSD. To narzędzie sprawdza wyłącznie poprawność składni, korzystając z parsera XML wbudowanego w przeglądarkę. Nie czyta DTD ani schematów, więc dokument poprawnie sformułowany, ale niewłaściwy dla Twojej aplikacji — na przykład z brakującym wymaganym elementem — przechodzi. Narzędzie egzekwuje te reguły:
| Reguła | Zostaje złamana, gdy |
|---|---|
| Jeden element główny | Są dwa elementy najwyższego poziomu albo tekst przed elementem głównym |
| Elementy są poprawnie zagnieżdżone | <a><b></a></b> |
| Każdy znacznik otwierający ma znacznik zamykający | <a><b></a> albo <br> zamiast <br/> |
| Nazwy rozróżniają wielkość liter | <Title>…</title> |
| Wartości atrybutów są w cudzysłowach | <a id=1/> |
| Atrybut nie powtarza się w elemencie | <a id="1" id="2"/> |
< i & w tekście są zapisane jako encje | <a>5 < 6 & 7</a> powinno być 5 < 6 & 7 |
XML definiuje dokładnie pięć wstępnie zdefiniowanych encji — <, >, &, ' i " — więc encja HTML, taka jak , jest błędem, chyba że DTD ją zadeklaruje. Przy niedomkniętym znaczniku komunikat, którego treść zależy od przeglądarki, wskazuje niedopasowaną parę: w Chrome <a><b></a> zgłasza błąd w wierszu 1, w kolumnie 11, z komunikatem „Opening and ending tag mismatch: b line 1 and a”.
Co zmienia formater
Narzędzie analizuje Twój XML do drzewa i zapisuje drzewo z powrotem, więc wynik jest równoważnym XML-em w czytelniejszym układzie, a nie kopią Twojego tekstu. Spodziewaj się takich różnic:
- Deklaracja i DOCTYPE zachowane. Wiersz
<?xml …?>na początku oraz deklaracja<!DOCTYPE …>, łącznie z wewnętrznym podzbiorem, są zapisywane tak, jak je wpisałeś. - Atrybuty zachowują kolejność, ale są zapisywane z cudzysłowami podwójnymi.
- Encje są rozwijane.
'i odwołania do znaków, takie jak©, wracają jako same znaki; ponownie jako encje zapisywane są tylko&,<i>w tekście oraz"w atrybutach. - Puste elementy zamykają się same.
<a></a>staje się<a/>, gdy nie ma treści, choć element zawierający tylko spację pozostaje<a></a>. - Komentarze, sekcje CDATA i instrukcje przetwarzania są zachowywane.
Przykład krok po kroku
Ten jednowierszowy dokument ma deklarację, atrybut w pojedynczych cudzysłowach, komentarz i pusty element:
Dane wejściowe
<?xml version="1.0" encoding="UTF-8"?><library><book id='1'><title>APA Manual</title><year>2020</year><!-- note --></book><book id="2"/></library>
Formatowanie, 2 spacje
Dziewięć wierszy i 172 znaki: deklaracja, potem library przy lewym marginesie, każdy book dwie spacje w głąb, a tytuł, rok i komentarz cztery spacje w głąb. Identyfikator pierwszej książki jest teraz zapisany jako id="1".
Minifikacja
Jeden wiersz o długości 146 znaków.
Statystyki
5 elementów i maksymalna głębokość 3 (library, book, title).
Minifikacja zachowuje deklarację i umieszcza całe drzewo w jednym wierszu, więc ten sam dokument kurczy się ze 172 do 146 znaków. Karta „Rozmiar wyniku” pokazuje te liczby znaków.
Którego narzędzia potrzebujesz?
Ta strona dotyczy XML-a. Dla HTML-a, który toleruje niedomknięte znaczniki i zachowuje odstępy w tekście, użyj HTML Formatter. Aby zamienić XML na dane JSON, planowany XML to JSON Converter pokaże, jak atrybuty i powtarzające się elementy się mapują; samego JSON-a użyj Formater JSON.
Najczęstsze pytania
- Co robi formater XML?
- Ponownie wcina XML, aby było widać zagnieżdżenie, zwykle z jednym elementem w wierszu. Ten też sprawdza, czy XML jest poprawnie sformułowany, bo musi przeanalizować dokument, zanim zapisze go w nowym układzie.
- Jak działa tutaj walidacja XML?
- Wbudowany w przeglądarkę parser XML czyta tekst. Jeśli XML łamie regułę składni, pokazywany jest błąd parsera i nic nie jest generowane. Sprawdzana jest tylko poprawność składni — narzędzie nie waliduje względem schematu DTD ani XSD.
- Czy komentarze, sekcje CDATA i atrybuty są zachowywane?
- Tak: komentarze i sekcje CDATA są zapisywane tak, jak były, a atrybuty zachowują kolejność, choć cudzysłowy są ujednolicane do podwójnych. Deklaracja DOCTYPE jest zapisywana tak, jak ją wpisałeś.
- Co robi minifikacja?
- Usuwa białe znaki i podziały wierszy między elementami, dając najkrótszy równoważny tekst, z zachowaniem deklaracji XML, jeśli występuje. Tekst wewnątrz elementów, takich jak
<title>, zachowuje swoje spacje, tak samo jak tekst obok elementów potomnych, na przykład akapit z pogrubionym słowem. - Dlaczego formatowanie zmienia odstępy w moim tekście?
- Tylko przy zawartości mieszanej — tekście sąsiadującym z elementami potomnymi, jak akapit z pogrubionym słowem. Formatowanie przycina taki tekst i umieszcza każdy fragment w osobnym wierszu, co zmienia białe znaki; Minifikacja je zachowuje. XML z danymi, w którym elementy zawierają albo tekst, albo inne elementy, nie jest tym dotknięty.
- Dlaczego mój XML z się nie udaje?
- XML ma tylko pięć wstępnie zdefiniowanych encji, a
do nich nie należy. Zastąp je odwołaniem liczbowym albo zadeklaruj encję w DTD. - Czy mój XML jest wysyłany na serwer?
- Nie. Analiza i formatowanie odbywają się w przeglądarce, a nic, co wklejasz, nie jest nigdzie wysyłane.