Konwerter XML na JSON
Wklej XML, uzyskaj JSON natychmiast. Konwertuje atrybuty na klucze @_, obsługuje powtarzające się elementy jako tablice. 100% w przeglądarce, nic nie jest przesyłane, bez rejestracji.
Opcje · 2 spacje · XML → JSON
Czym jest konwersja XML na JSON i jak działa?
XML (Extensible Markup Language) i JSON (JavaScript Object Notation) to oba formaty danych strukturalnych, ale mają zasadniczo różne modele: XML jest drzewem elementów z atrybutami i mieszaną zawartością (tekst przeplatany elementami podrzędnymi); JSON jest drzewem obiektów, tablic, ciągów, liczb, wartości logicznych i null. Konwersja między nimi wymaga zestawu konwencji do przezwyciężenia tej rozbieżności.
Narzędzie używa najszerzej przyjętej konwencji, tej samej co popularne biblioteki jak fast-xml-parser (Node.js), xmltodict (Python) i JAXB (Java):
**1. Atrybuty → prefiks @_.** Atrybuty XML nie mają bezpośredniego odpowiednika w JSON. Konwencją jest reprezentowanie ich jako kluczy z prefiksem @_. Więc
**2. Treść tekstowa elementu z atrybutami → #text.** Gdy element ma zarówno atrybuty, jak i treść tekstową —
**3. Powtarzające się elementy siostrzane → tablice.** XML dopuszcza wiele elementów podrzędnych o tej samej nazwie; obiekty JSON nie mogą mieć zduplikowanych kluczy. Rozwiązaniem jest zebranie elementów siostrzanych o tej samej nazwie w tablicę. Jeden element podrzędny
**4. Bez wymuszania typów — wszystkie wartości pozostają ciągami.** XML nie ma natywnego systemu typów dla treści tekstowej. Wartość «123» w XML jest ciągiem. Konwersja jej na liczbę JSON 123 wymaga przyjęcia założenia o intencji autora — założenia, które jest błędne dla kodów ZIP ("01234" → 1234), numerów telefonów, identyfikatorów z wypełnieniem i ciągów precyzyjnych dziesiętnych. Narzędzie zachowuje wszystkie wartości jako ciągi. Stosuj wymuszanie typów w swoim własnym kodzie dla pól, gdzie znasz typ.
**5. Stratne dla komentarzy, instrukcji przetwarzania i przestrzeni nazw.** XML obsługuje funkcje, których JSON nie ma: komentarze (), instrukcje przetwarzania (), i semantykę przestrzeni nazw. Są one odrzucane lub przybliżane podczas konwersji. Dla bezstratnej pracy z XML — reformatowania, minimalizacji, walidacji — użyj zamiast tego Formatowania XML. Dla odwrotnej konwersji — budowania XML z JSON — użyj Konwertera JSON na XML.
**Po co w ogóle konwertować XML na JSON?** JSON jest natywnym formatem JavaScript i domyślnym formatem wymiany dla REST API. Jeśli otrzymujesz XML ze starszej usługi SOAP, kanału RSS, mapy strony lub systemu korporacyjnego, konwersja na JSON pozwala pracować z danymi przy użyciu standardowego dostępu do obiektów JavaScript, zapytań JSON path i dowolnej bazy danych lub API obsługującej JSON. Konwersja to jednokierunkowy most: przydatny do konsumowania danych XML w nowoczesnym stosie, ale nie do zachowywania lub konwersji dokumentów XML w obie strony.
// Convert XML to JSON in Node.js using fast-xml-parser
import { XMLParser } from 'fast-xml-parser';
const xml = `<catalog>
<product id="P01">
<name>Wireless Headphones</name>
<price currency="USD">79.99</price>
</product>
</catalog>`;
const parser = new XMLParser({
ignoreAttributes: false, // preserve attributes
attributeNamePrefix: '@_', // @_ prefix for attributes
textNodeName: '#text', // #text for mixed element content
parseAttributeValue: false, // no type coercion on attributes
parseTagValue: false, // no type coercion on element text
});
const result = parser.parse(xml);
console.log(JSON.stringify(result, null, 2));
// {
// "catalog": {
// "product": {
// "@_id": "P01",
// "name": "Wireless Headphones",
// "price": {
// "@_currency": "USD",
// "#text": "79.99"
// }
// }
// }
// } Kluczowe funkcje
Konwersja na żywo
Wynik JSON aktualizuje się natychmiast podczas wpisywania lub wklejania XML — bez potrzeby klikania przycisku Konwertuj. Duże dane wejściowe (>200 KB) automatycznie przełączają się na tryb ręczny, aby przeglądarka pozostała responsywna.
Konwencja prefiksu @_ dla atrybutów
Atrybuty XML stają się kluczami JSON z prefiksem @_, zgodnie z konwencją fast-xml-parser i xmltodict.
Automatyczne wykrywanie tablic dla powtarzających się elementów
Elementy siostrzane o tej samej nazwie automatycznie stają się tablicą JSON. Jeden
Bez wymuszania typów — wartości pozostają ciągami
Wszystkie wartości XML są zachowywane jako ciągi JSON. Wiodące zera, numery telefonów, kody z wypełnieniem i ciągi wyglądające jak logiczne, takie jak «true» lub «false», nigdy nie są cicho konwertowane na liczby ani wartości logiczne.
100% prywatność w przeglądarce
Cała konwersja odbywa się lokalnie w przeglądarce przy użyciu JavaScript. Dane XML — w tym dane uwierzytelniające, wewnętrzne konfiguracje i wrażliwe ładunki — nigdy nie są wysyłane na żaden serwer, nigdy nie są rejestrowane ani przechowywane.
Raportowanie błędów poprawności strukturalnej
Jeśli XML nie jest poprawny strukturalnie, narzędzie raportuje dokładny numer wiersza i kolumny pierwszego błędu, dzięki czemu można natychmiast zlokalizować i naprawić problem przed konwersją.
Przykłady
Plik konfiguracyjny
<?xml version="1.0" encoding="UTF-8"?>
<appConfig version="2.1" env="production">
<database>
<host>db.example.com</host>
<port>5432</port>
<name>myapp_prod</name>
<pool max="10" min="2"/>
</database>
<cache enabled="true">
<ttl>3600</ttl>
<driver>redis</driver>
</cache>
</appConfig> Mały plik konfiguracyjny aplikacji z atrybutami i zagnieżdżonymi elementami. Atrybuty stają się kluczami z prefiksem @_ w wynikowym JSON: version="2.1" staje się "@_version": "2.1" pod appConfig, a atrybuty max i min elementu pool stają się "@_max": "10" i "@_min": "2". Wszystkie wartości — w tym port i ttl — pozostają ciągami znaków, nie liczbami, ponieważ konwerter nie wykonuje żadnego wymuszania typów.
Fragment mapy strony
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://go-tools.org/tools/xml-to-json</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://go-tools.org/tools/json-to-xml</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset> Fragment sitemap.xml z dwoma URL-ami. Ponieważ pod
Element RSS
<item> <title>XML to JSON: A Practical Guide</title> <link>https://go-tools.org/blog/xml-to-json-guide</link> <pubDate>Thu, 29 May 2026 00:00:00 GMT</pubDate> <category>Developer Tools</category> <description>Learn how XML attributes map to @_ keys, how repeated elements become arrays, and why values stay strings in any XML-to-JSON conversion.</description> <guid isPermaLink="true">https://go-tools.org/blog/xml-to-json-guide</guid> </item>
Element item RSS 2.0. Element guid ma atrybut isPermaLink, więc wynikowy JSON dla guid staje się obiektem z "@_isPermaLink": "true" i "#text": "https://go-tools.org/blog/xml-to-json-guide" — atrybut i treść tekstowa elementu współistnieją jako klucze siostrzane. Wszystkie inne elementy mają tylko treść tekstową i konwertują bezpośrednio na wartości ciągów.
Jak używać
- 1
Wklej dane XML
Wprowadź lub wklej XML do pola wejściowego powyżej. Możesz też kliknąć «Wczytaj przykład», aby wypróbować próbkę — plik konfiguracyjny, fragment mapy strony lub element RSS.
- 2
Zobacz wynik JSON na żywo
JSON pojawia się natychmiast w panelu wyjściowym. Atrybuty stają się kluczami z prefiksem @_, treść tekstowa elementów mieszanych staje się #text, a powtarzające się elementy siostrzane stają się tablicami. Dostosuj wcięcie (2 lub 4 spacje) według potrzeb.
- 3
Kopiuj lub pobierz
Kliknij Kopiuj, aby przenieść JSON do schowka, lub Pobierz, aby zapisać jako plik .json gotowy do użycia w aplikacji, API lub potoku danych.
Typowe problemy przy konwersji
Zapomnienie, że wartości pozostają ciągami
Konwerter nie wykonuje żadnego wymuszania typów. Jeśli kod docelowy oczekuje liczb JSON, ale XML zawiera ciągi numeryczne, musisz je jawnie konwertować po dokonaniu konwersji. Poleganie na niejawnym wymuszaniu ciąg-na-liczbę (operatory == lub arytmetyczne JavaScript) jest podatne na błędy — zawsze używaj parseInt(), parseFloat() lub Number() świadomie.
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" } ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... } // "30" > 25 coerces, but fragile // XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }
// Safe: explicit coercion where you know the type
if (parseInt(config.timeout, 10) > 25) { ... } Niezgodność kształtu: pojedynczy element a tablica
Gdy jest tylko jeden element
// XML with one item: <root><item>a</item></root>
// JSON: { "root": { "item": "a" } } ← string, not array
result.root.item.forEach(i => console.log(i)); // TypeError: not a function // Normalize to array regardless of count const items = [].concat(result.root?.item ?? []); items.forEach(i => console.log(i)); // safe for 0, 1, or many
Mieszana zawartość: tekst i klucz #text
Gdy element ma zarówno atrybuty, jak i treść tekstową, tekst trafia pod #text. Dostęp do wartości tekstowej jak do zwykłego ciągu zwróci obiekt zamiast tego. Zawsze sprawdzaj, czy wartość elementu jest ciągiem czy obiektem z kluczem #text, gdy atrybuty są możliwe.
// XML: <price currency="USD">29.99</price>
// JSON: { "price": { "@_currency": "USD", "#text": "29.99" } }
const amount = result.price; // { "@_currency": "USD", "#text": "29.99" }, not "29.99" // Handle both plain string and @_/#text object const raw = result.price; const amount = typeof raw === 'object' ? raw['#text'] : raw; // "29.99"
Niepoprawny strukturalnie XML jako wejście
Konwerter wymaga poprawnego strukturalnie XML. Częste przyczyny błędów poprawności strukturalnej: nieescapowany & w treści tekstowej (użyj &), niezgodne znaczniki (
<!-- Unescaped & — well-formedness error --> <query>name = 'Alice' & role = 'admin'</query>
<!-- Escaped & — valid XML --> <query>name = 'Alice' & role = 'admin'</query>
Wartości z wiodącym zerem uszkodzone przez wymuszanie typów
Narzędzie zachowuje wiodące zera, ponieważ nie wykonuje żadnego wymuszania typów. Jeśli przetwarzasz JSON dalej biblioteką, która wymusza typy (niektóre walidatory schematów JSON, mapery ORM), wiodące zero może zostać utracone. Zawsze deklaruj typ pola jawnie jako ciąg w swoim schemacie.
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" } ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() } → 1234 ← leading zero lost // Declare ZIP codes and other padded identifiers as strings
// { zipCode: z.string() } → "01234" ← correct Typowe zastosowania
- Konsumowanie SOAP i starszych API XML
- Starsze serwisy korporacyjne (bankowe, ubezpieczeniowe, logistyczne) często udostępniają API SOAP zwracające XML. Przekonwertuj odpowiedź na JSON, aby pracować z danymi przy użyciu nowoczesnych narzędzi JavaScript, przechowywać je w bazie dokumentów lub przekazywać do konsumenta REST API.
- Przetwarzanie kanałów RSS i Atom
- Kanały RSS 2.0 i Atom 1.0 to XML. Przekonwertuj XML kanału na JSON, aby wyodrębniać tytuły, linki, daty publikacji i opisy dla agregatorów kanałów, potoków treści i systemów powiadomień bez zależności od biblioteki parsującej XML.
- Parsowanie plików mapy strony
- Pliki sitemap.xml wyliczają URL-e witryny z metadanymi. Przekonwertuj mapę strony na JSON, aby analizować pokrycie URL-ami, budować kolejki indeksowania, porównywać mapy stron w różnych środowiskach lub przekazywać URL-e do narzędzia sprawdzającego linki lub audytu SEO.
- Transformacja plików konfiguracyjnych
- Wiele systemów korporacyjnych (Spring, Maven, Ant, JBoss, Tomcat) używa plików konfiguracyjnych XML. Przekonwertuj je na JSON do analizy, skryptów migracyjnych, generowania dokumentacji lub importowania do narzędzi natywnie obsługujących JSON.
- Programowanie na Android
- Zasoby Androida, pliki układów i AndroidManifest.xml to XML. Przekonwertuj je na JSON dla skryptów analitycznych, automatycznego audytu lub generowania dokumentacji o zadeklarowanych uprawnieniach, aktywnościach i wartościach zasobów.
- Migracja danych i ETL
- Eksporty danych z systemów korporacyjnych (ERP, CRM, płace) często są dostarczane jako XML. Przekonwertuj na JSON jako pierwszy krok w potoku ETL, aby załadować dane do magazynu natywnie obsługującego JSON, takiego jak MongoDB, Firestore lub REST API.
Szczegóły techniczne
- DOMParser przeglądarki do parsowania XML
- Dane wejściowe XML są parsowane przy użyciu natywnego DOMParser przeglądarki z typem MIME «text/xml» — tego samego silnika używanego do renderowania SVG i XHTML. Jest w pełni zgodny z XML 1.0 i raportuje błędy poprawności strukturalnej z informacją o numerze wiersza i kolumny. Podejście to obsługuje przestrzenie nazw, sekcje CDATA, instrukcje przetwarzania i referencje encji poprawnie, bez żadnych zależności od bibliotek zewnętrznych.
- Rekurencyjna serializacja DOM na JSON
- Po sparsowaniu narzędzie rekurencyjnie przechodzi drzewo DOM. Węzły elementów stają się obiektami JSON; ich atrybuty stają się kluczami z prefiksem @_; elementy zawierające tylko tekst stają się zwykłymi wartościami ciągów; elementy z zarówno atrybutami, jak i treścią tekstową zyskują klucz #text dla treści tekstowej. Elementy siostrzane o tej samej nazwie są zbierane i generowane jako tablica JSON. Węzły tekstowe zawierające tylko białe znaki między elementami są odrzucane.
- Bez wymuszania typów — zachowanie ciągów
- Wszystkie wartości atrybutów i treść tekstowa są zapisywane w wynikowym JSON jako ciągi znaków. Nie jest stosowane żadne parseInt, parseFloat ani parsowanie logiczne. Jest to celowy wybór projektowy, aby zapobiec cichemu uszkodzeniu danych dla wartości z wiodącym zerem, precyzyjnych dziesiętnych i ciągów wyglądających jak logiczne. Wymuszanie typów, tam gdzie jest potrzebne, powinno być stosowane jawnie w kodzie docelowym.
- 100% w przeglądarce — bez przesyłania, bez serwera
- Całe przetwarzanie odbywa się w silniku JavaScript przeglądarki. Żadne dane nie są przesyłane przez sieć w żadnym momencie. Dane wejściowe większe niż 200 KB automatycznie przełączają się z trybu na żywo na tryb ręczny (wymagający jawnego kliknięcia Konwertuj), aby utrzymać responsywność przeglądarki i zapobiec blokowaniu głównego wątku podczas intensywnego przechodzenia przez DOM.
Dobre praktyki
- Najpierw zwaliduj poprawność strukturalną XML
- Jeśli źródłem XML jest ręcznie pisany tekst lub system, który czasem produkuje nieprawidłowe wyjście, zwaliduj go przed konwersją. Użyj przycisku Waliduj w Formatowaniu XML, aby potwierdzić poprawność strukturalną XML i uzyskać precyzyjne lokalizacje błędów dla problemów.
- Normalizuj pola «jeden lub wiele» do tablic
- Gdy schemat XML dopuszcza jeden lub wiele elementów podrzędnych o tej samej nazwie, wynik JSON będzie obiektem dla jednego elementu i tablicą dla wielu. Zawsze normalizuj te pola w kodzie konsumującym: const items = [].concat(result.items ?? []) — jest to bezpieczne dla zera, jednego lub wielu elementów i zapobiega błędom TypeError.
- Stosuj wymuszanie typów jawnie i wybiórczo
- Ponieważ narzędzie zachowuje wszystkie wartości jako ciągi, stosuj wymuszanie typów świadomie w kodzie dla konkretnych pól, które tego wymagają. Używanie parseInt(val, 10) dla znanych pól całkowitoliczbowych jest bezpieczne. Stosowanie wymuszania ogólnie przez Number(val) grozi uszkodzeniem wartości z wiodącym zerem, pustych ciągów i precyzyjnych dziesiętnych.
- Sprawdzaj #text przy dostępie do wartości elementów
- Jeśli element może mieć atrybuty w niektórych ładunkach i nie mieć ich w innych, jego wartość JSON będzie albo zwykłym ciągiem (bez atrybutów), albo obiektem z kluczami @_ i kluczem #text (z atrybutami). Pisz odporne akcesory: const val = typeof node === 'object' ? node['#text'] : node. Ten wzorzec obsługuje oba kształty i unika cichych wartości undefined.
- Dla bezstratnej pracy z XML użyj Formatowania XML
- Konwersja XML na JSON odrzuca komentarze, instrukcje przetwarzania i semantykę przestrzeni nazw. Jeśli chcesz zachować całą zawartość XML dokładnie, użyj Formatowania XML, aby upiększyć, zminimalizować i walidować bez żadnych strat. Konwertuj na JSON tylko wtedy, gdy musisz pracować z danymi w kontekście natywnym dla JSON.
Najczęściej zadawane pytania
Czy dane XML są wysyłane na serwer podczas korzystania z narzędzia?
Jak atrybuty XML są mapowane w wynikowym JSON?
Czy konwerter wymusza typy dla liczb lub wartości logicznych?
Jak obsługiwane są powtarzające się (o tej samej nazwie siostrzane) elementy?
Czy konwersja XML na JSON jest bezstratna?
Jak przekonwertować JSON z powrotem na XML?
Co dzieje się z przestrzeniami nazw XML?
Dlaczego 0123 staje się "0123" a nie 123?
Jaka jest różnica między tym narzędziem a formatowaniem XML?
Czy istnieje limit rozmiaru pliku?
Czy konwerter obsługuje sekcje CDATA?
Czy mogę konwertować XML z wieloma elementami głównymi?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Koder i dekoder Base64
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Konwerter CSV na JSON
Kodowanie i formatowanie
Konwertuj CSV na JSON w przeglądarce. RFC 4180, wnioskowanie typów, nagłówek, big-int safe. 100% prywatnie, bez wysyłki.
JSON Diff (Porównaj)
Kodowanie i formatowanie
Porównaj dwa pliki JSON natychmiast w przeglądarce. Podświetlanie obok siebie, wynik JSON Patch (RFC 6902), ignorowanie szumliwych pól jak znaczniki czasu i identyfikatory. 100% prywatności, bez przesyłania.
Formatowanie i walidacja JSON
Kodowanie i formatowanie
Formatuj, waliduj i upiększaj JSON w przeglądarce. Bezpłatne narzędzie z kontrolą składni, wykrywaniem błędów i minifikacją. 100% prywatnie.
Walidator JSON Schema
Kodowanie i formatowanie
Sprawdź dane JSON względem dowolnego JSON Schema natychmiast w przeglądarce. Obsługa Draft 2020-12, 2019-09 i Draft-07 z dokładnymi ścieżkami błędów. 100% prywatnie — bez wysyłania, bez konta, za darmo.
Konwerter JSON na CSV
Kodowanie i formatowanie
Konwertuj JSON na CSV w przeglądarce. Presety RFC 4180, Excel-EU, TSV, Pipe. Spłaszczanie zagnieżdżeń lub stringify. 100% prywatnie, bez wysyłki.