Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Konwerter XML na JSON

Zamienia XML na JSON: atrybuty z prefiksem, tablice z powtarzalnych elementów i opcjonalna konwersja liczb oraz true/false.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}

Limit 256 KB. Skrót: Ctrl+Enter konwertuje.

Wynik konwersji

Poprawny XML OK

XML jest poprawny. Element główny „bookstore” zamieniono na JSON; tablice utworzone z elementów potomnych: 1.

Węzły JSON

22

klucze i pozycje tablic

Głębokość

5

poziomy zagnieżdżenia

Elementy XML

9

Atrybuty

6

Rozmiar XML

375 B

Rozmiar JSON

864 B

230% rozmiaru XML

JSON

{ "bookstore": { "book": [ { "@category": "tech", "title": { "@lang": "pl", "value": "Wzorce projektowe" }, "author": { "value": "Erich Gamma" }, "price": { "@currency": "PLN", "value": 129 } }, { "@category": "business", "title": { "@lang": "en", "value": "The Lean Startup" }, "author": { "value": "Eric Ries" }, "price": { "@currency": "PLN", "value": 89 } } ] } }
864 znaków · 59 słów · 35 linii

Ściąga: jak konwerter zamienia XML na JSON

Wyniki z bieżącymi ustawieniami (zawsze z elementem głównym)
XMLJSONReguła
<imie>Anna</imie> {"imie":{"value":"Anna"}} Element z samym tekstem
<cena waluta="PLN">12.50</cena> {"cena":{"@waluta":"PLN","value":12.5}} Atrybut i tekst w jednym elemencie
<lista><x>1</x><x>2</x></lista> {"lista":{"x":[{"value":1},{"value":2}]}} Powtórzony element staje się tablicą
<lista><x>1</x></lista> {"lista":{"x":{"value":1}}} Pojedynczy element: obiekt (tablica przy „Zawsze tablice”)
<pusty/> {"pusty":[]} Pusty element
<kod>007</kod> {"kod":{"value":"007"}} Zera wiodące: wartość zostaje tekstem
<aktywny>true</aktywny> {"aktywny":{"value":true}} true/false: wartość logiczna przy „Konwertuj typy”
<opis><![CDATA[<b>HTML</b>]]></opis> {"opis":{"value":"<b>HTML</b>"}} CDATA: zwykły tekst

Atrybuty, tekst i tablice

Atrybut trafia do klucza z wybranym prefiksem, np. atrybut lang jako „@lang”. Tekst elementu trafia pod klucz tekstu (domyślnie value), a z opcją „Prosty tekst jako wartość” element bez atrybutów daje od razu parę „imie”: „Anna”. Element o tej samej nazwie powtórzony w jednym rodzicu staje się tablicą. Gdy program oczekuje zawsze tej samej struktury, włącz „Zawsze tablice”.

Liczby i wartości logiczne

Przy „Konwertuj typy” liczbą staje się tylko zapis kanoniczny: bez zer wiodących, bez plusa i notacji wykładniczej, najwyżej 15 cyfr przed kropką. Dlatego 007, 00-950 czy numer telefonu zostają tekstem. Ułamek 129.00 zapisuje się jako 129, a 12.50 jako 12.5 (ta sama wartość). Słowa true i false stają się wartościami logicznymi. Wyłącz opcję, gdy wszystko ma zostać tekstem.

Czego JSON nie przeniesie

Komentarze, instrukcje przetwarzania i deklaracja <?xml ?> są pomijane. Przestrzeń nazw zostaje tylko jako prefiks w nazwie klucza (np. „media:content”), bez adresu URI. Tekst stojący obok elementów potomnych (treść mieszana, np. akapit z <b>) jest pomijany i narzędzie wtedy ostrzega. Elementy o tej samej nazwie są zbierane w jedną tablicę, więc ich kolejność względem innych może się zmienić. Spacje na brzegach tekstu są obcinane.

Bezpieczeństwo i limity

Deklaracje DOCTYPE i ENTITY są blokowane, a parser niczego nie pobiera z sieci, co chroni przed atakami XXE. Limit dokumentu to 256 KB. Treść XML służy tylko do tej konwersji i nie jest zapisywana; w statystykach narzędzia zostaje wyłącznie liczba węzłów wyniku.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Konwerter XML na JSON

Konwerter XML na JSON zamienia dokument XML (do 256 KB) na obiekt JSON: atrybuty dostają prefiks @, tekst elementu trafia pod klucz value, a powtórzone znaczniki stają się tablicami. XML dominuje w integracjach i feedach, JSON w nowoczesnych API, więc taka zamiana pozwala przenieść dane między systemami bez pisania własnego parsera.

Opcje konwersji XML na JSON

OpcjaDomyślnieCo zmienia
Konwertuj typywłączonaKanoniczne liczby i słowa true/false stają się typami JSON, reszta zostaje tekstem.
Zachowaj element głównywłączonaPo wyłączeniu znika zewnętrzny klucz, np. "user", a wynik zaczyna się od jego zawartości.
Prosty tekst jako wartośćwyłączonaElement bez atrybutów daje "imie": "Anna" zamiast "imie": {"value": "Anna"}.
Zawsze tablicewyłączonaKażdy element potomny trafia do tablicy, także wtedy, gdy występuje tylko raz.
Prefiks atrybutu@Do wyboru @, _ albo brak prefiksu.
Klucz tekstuvalueWłasna nazwa, np. text albo _text: litery, cyfry, _ i -, na początku litera lub _.
Sformatowany JSON i wcięciewłączony, 4 spacjeWcięcie 4 lub 2 spacje albo tabulator. Po wyłączeniu JSON jest zminifikowany do jednej linii.

Przykład

<user id="1"><name>Anna</name></user>

Przy domyślnych ustawieniach daje:

{"user":{"@id":1,"name":{"value":"Anna"}}}

Atrybut id="1" stał się liczbą, bo konwersja typów jest domyślnie włączona. Z opcją „Prosty tekst jako wartość” wynik skraca się do {"user":{"@id":1,"name":"Anna"}}.

Jak działa konwersja XML na JSON

Konwersja zaczyna się od sparsowania tekstu XML do drzewa węzłów. Parser sprawdza poprawność składni: niedomknięty znacznik albo brak cudzysłowu w atrybucie kończy się błędem, a nie częściowym wynikiem. Narzędzie pokazuje wtedy numer linii i kolumny, fragment tej linii, oryginalny komunikat parsera i podpowiedź po polsku, np. że samotny znak & trzeba zapisać jako &amp;.

Drugi etap to rekurencyjne przejście po drzewie. Każdy element staje się obiektem JSON. Atrybuty trafiają do tego obiektu pod kluczami z prefiksem, np. @id, a tekst wewnątrz elementu ląduje pod kluczem tekstu (domyślnie value). Jeśli ten sam znacznik występuje u jednego rodzica kilka razy, zamieniany jest na tablicę w kolejności z dokumentu. Elementy zagnieżdżone tworzą obiekty wewnątrz obiektów. Sekcje CDATA są czytane jako zwykły tekst, a spacje na brzegach tekstu są obcinane.

Ostatni krok to konwersja typów, domyślnie włączona. Liczbą staje się tylko zapis kanoniczny: bez zer wiodących, bez plusa i notacji wykładniczej, najwyżej 15 cyfr przed kropką. Dlatego 443 daje 443, ale 007, kod pocztowy 00-950 czy 1e3 zostają tekstem. Ułamek 129.00 zapisuje się jako 129, a 12.50 jako 12.5 (ta sama wartość). Słowa true i false, bez względu na wielkość liter, stają się wartościami logicznymi. Obok wyniku widać liczbę węzłów JSON, głębokość zagnieżdżenia, liczbę elementów i atrybutów oraz rozmiar XML i JSON w bajtach. Gotowy JSON kopiujesz jednym przyciskiem.

Przykład krok po kroku

  1. Wklejamy dokument: <zamowienie id="1043"><klient>Anna</klient><pozycja kod="A1"><ilosc>2</ilosc></pozycja><pozycja kod="B7"><ilosc>5</ilosc></pozycja><oplacone>true</oplacone></zamowienie>
  2. Element główny zamowienie staje się kluczem najwyższego poziomu "zamowienie" (opcja „Zachowaj element główny”).
  3. Atrybut id="1043" zamienia się na parę "@id": 1043, czyli liczbę. Po wyłączeniu konwersji typów będzie to tekst "1043".
  4. Element <klient>Anna</klient> daje "klient": {"value": "Anna"}, bo tekst elementu trafia pod klucz value.
  5. Dwa znaczniki <pozycja> tworzą tablicę: "pozycja": [{"@kod": "A1", "ilosc": {"value": 2}}, {"@kod": "B7", "ilosc": {"value": 5}}]. Kolejność A1 przed B7 zostaje zachowana.
  6. Element <oplacone>true</oplacone> daje "oplacone": {"value": true}, a przy wyłączonej konwersji typów {"value": "true"}.
  7. Wynik w całości: {"zamowienie":{"@id":1043,"klient":{"value":"Anna"},"pozycja":[{"@kod":"A1","ilosc":{"value":2}},{"@kod":"B7","ilosc":{"value":5}}],"oplacone":{"value":true}}}
  8. Z opcją „Prosty tekst jako wartość” ten sam dokument daje krótszą postać: {"zamowienie":{"@id":1043,"klient":"Anna","pozycja":[{"@kod":"A1","ilosc":2},{"@kod":"B7","ilosc":5}],"oplacone":true}}

Tabela referencyjna mapowania

Element w XMLWynik w JSON (ustawienia domyślne)Uwaga
Atrybut, np. id="1043""@id": 1043Prefiks odróżnia atrybut od elementu potomnego. Bez konwersji typów: "1043".
Tekst elementu, np. <klient>Anna</klient>"klient": {"value": "Anna"}Z opcją „Prosty tekst jako wartość”: "klient": "Anna".
Atrybut i tekst, np. <cena waluta="PLN">12.50</cena>"cena": {"@waluta": "PLN", "value": 12.5}Gdy element ma atrybuty, tekst zawsze trafia pod klucz tekstu.
Powtarzalny element, np. dwa <pozycja>"pozycja": [{...}, {...}]Tablica powstaje przy dwóch wystąpieniach, przy „Zawsze tablice” także przy jednym.
Element zagnieżdżony, np. <adres><miasto>"adres": {"miasto": {...}}Zagnieżdżenie XML odpowiada zagnieżdżeniu obiektów JSON.
Pusty element, np. <pusty/>"pusty": []Pusta tablica, a z opcją „Prosty tekst jako wartość” pusty napis "".
Prefiks przestrzeni nazw, np. media:content"media:content"Prefiks zostaje w nazwie klucza, adres URI przestrzeni nazw nie trafia do JSON.
Encja znakowa, np. &amp;& w wartości tekstowejStandardowe encje są zamieniane na znaki, które reprezentują.
Treść mieszana, np. <p>Tekst <b>x</b></p>"p": {"b": {"value": "x"}}Tekst obok elementów potomnych jest pomijany, a narzędzie pokazuje ostrzeżenie.

Jak korzystać z konwertera

  • Zacznij od gotowego przykładu (księgarnia, kanał RSS, konfiguracja), żeby zobaczyć format wyniku, a potem wklej własny dokument. Skrót Ctrl+Enter uruchamia konwersję, a zmiana opcji od razu przelicza wynik.
  • Decyzję o typach podejmij przed eksportem. Konwersję typów zostaw włączoną, gdy dane pójdą do API lub bazy; wyłącz ją, gdy każda wartość ma zostać tekstem. Zera wiodące i kody pocztowe są chronione także przy włączonej opcji.
  • Pojedynczy element daje obiekt, a dwa takie same – tablicę. Jeśli kod odczytujący wynik oczekuje zawsze tablicy (np. lista pozycji zamówienia, która czasem ma jedną pozycję), włącz „Zawsze tablice”.
  • Prefiksu atrybutów nie wyłączaj, jeśli atrybut i element potomny mogą mieć tę samą nazwę. Przy <a id="1"><id>2</id></a> bez prefiksu element nadpisze atrybut i wartość 1 zniknie z wyniku.
  • Przy błędzie składni sprawdź linię wskazaną przez narzędzie. Najczęstsze przyczyny to niedomknięty znacznik, samotny znak & i brak cudzysłowu w wartości atrybutu.

Ograniczenia i pułapki

  • Treść mieszana, czyli tekst stojący obok elementów potomnych (np. akapit z pogrubieniem), nie trafia do JSON. Narzędzie ostrzega, w ilu elementach tak się stało.
  • Elementy o tej samej nazwie są zbierane w jedną tablicę. <a><x>1</x><y>2</y><x>3</x></a> daje {"a":{"x":[{"value":1},{"value":3}],"y":{"value":2}}}, więc informacja, że y stał między dwoma x, ginie.
  • Komentarze, instrukcje przetwarzania i deklaracja <?xml ?> nie są częścią modelu danych JSON i nie pojawiają się w wyniku.
  • Deklaracje DOCTYPE i ENTITY są blokowane, a parser niczego nie pobiera z sieci (ochrona przed atakami XXE). Z dokumentu z deklaracją DOCTYPE trzeba usunąć tę linię; standardowe encje, np. &amp; i &lt;, działają.
  • Limit dokumentu to 256 KB. Większy plik podziel na części. Konwersja odbywa się na serwerze, a treść XML nie jest zapisywana.
  • Konwersja nie jest w pełni odwracalna: powrót do XML może dać inną kolejność elementów i bez przestrzeni nazw, dlatego JSON nie powinien być jedynym archiwum oryginału.

Najczęstsze pytania

Jak zamienić XML na JSON?

Wklej dokument do pola „Dokument XML” i kliknij „Konwertuj na JSON” albo naciśnij Ctrl+Enter. Wynik skopiujesz przyciskiem „Kopiuj JSON”.

Dlaczego 007 albo kod pocztowy zostają tekstem?

Konwersja typów zamienia na liczbę tylko zapis kanoniczny, bez zer wiodących. Dzięki temu kody, numery telefonów i identyfikatory z zerem na początku nie tracą cyfr.

Czy konwersja jest odwracalna?

Nie w 100%: kolejność różnych elementów, treść mieszana, komentarze i adresy przestrzeni nazw mogą zginąć. Do konwersji w drugą stronę służy konwerter JSON na XML.

Co z przestrzeniami nazw?

Prefiks zostaje w nazwie klucza, np. "media:content", także dla atrybutów. Adres URI przestrzeni nazw nie jest przenoszony.

Jaki jest maksymalny rozmiar pliku XML?

256 KB. Przy większym dokumencie narzędzie zgłosi błąd, więc podziel plik na mniejsze części.

Czy wynik mogę od razu wysłać do API?

Tak, wynik to poprawny JSON. Sprawdź tylko typy: przy wyłączonej konwersji typów liczby i wartości logiczne zostaną tekstem, a strukturę możesz opisać w generatorze JSON Schema.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!