Skip to content

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.

Bez śledzenia Działa w przeglądarce Bezpłatne
Opcje · 2 spacje · XML → JSON
Wcięcie
0 znaków
JSON Wynik
0 linii
Zweryfikowano pod kątem obsługi poprawności strukturalnej XML 1.0, poprawności konwencji @_/#text oraz dokładności zachowania ciągów — Go Tools Engineering Team · May 29, 2026

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 staje się { "@_id": "42", "@_role": "admin" } wewnątrz obiektu user. Ten prefiks jest jednoznaczny: żadna poprawna nazwa elementu XML nie zaczyna się od @, więc nie ma kolizji z nazwami elementów podrzędnych.

**2. Treść tekstowa elementu z atrybutami → #text.** Gdy element ma zarówno atrybuty, jak i treść tekstową — 29.99 — tekst musi dzielić ten sam obiekt JSON co atrybuty. Konwencją jest przechowywanie go pod kluczem #text, dając { "@_currency": "USD", "#text": "29.99" }. Elementy z tylko treścią tekstową bez atrybutów konwertują na zwykłą wartość ciągu.

**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 staje się pojedynczym obiektem; dwa lub więcej elementów podrzędnych staje się tablicą obiektów. Jest to najważniejszy szczegół behawioralny do zrozumienia: kształt JSON zmienia się w zależności od tego, ile elementów siostrzanych istnieje w XML.

**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. staje się { "@_attr": "val" } — jednoznaczne i bez kolizji z dowolną poprawną nazwą elementu.

Automatyczne wykrywanie tablic dla powtarzających się elementów

Elementy siostrzane o tej samej nazwie automatycznie stają się tablicą JSON. Jeden → obiekt; dwa lub więcej elementów → tablica. Bez konfiguracji — narzędzie automatycznie wykrywa powtórzenia.

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 są dwa elementy siostrzane , stają się tablicą JSON. Deklaracja przestrzeni nazw xmlns staje się "@_xmlns" w obiekcie urlset. Wartość priority "0.8" pozostaje ciągiem znaków — bez wymuszania typów numerycznych — więc wartości z wiodącym zerem jak "0.08" byłyby też zachowane dokładnie.

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. 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. 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. 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.

✗ Niepoprawne
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }  ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... }  // "30" > 25 coerces, but fragile
✓ Poprawne
// 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 , wyjście jest obiektem; gdy jest ich dwa lub więcej, staje się tablicą. Kod konsumujący, który zawsze wywołuje result.items.forEach(), wywoła błąd, gdy items jest pojedynczym obiektem. Zawsze normalizuj do tablicy po konwersji, jeśli schemat dopuszcza jeden lub wiele elementów.

✗ Niepoprawne
// 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
✓ Poprawne
// 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.

✗ Niepoprawne
// 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"
✓ Poprawne
// 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 ( vs — XML rozróżnia wielkość liter), wiele elementów głównych lub niezamknięte znaczniki. Komunikat błędu pokazuje wiersz i kolumnę pierwszego problemu.

✗ Niepoprawne
<!-- Unescaped & — well-formedness error -->
<query>name = 'Alice' & role = 'admin'</query>
✓ Poprawne
<!-- Escaped & — valid XML -->
<query>name = 'Alice' &amp; 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.

✗ Niepoprawne
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" }  ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() }  → 1234  ← leading zero lost
✓ Poprawne
// 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?
Nie. Cała konwersja odbywa się wyłącznie w przeglądarce przy użyciu JavaScript. Dane XML nigdy nie są przesyłane przez sieć, nie są przechowywane na żadnym serwerze ani rejestrowane czy analizowane. Narzędzie jest bezpieczne do użytku z ładunkami XML zawierającymi dane uwierzytelniające API, wewnętrzną konfigurację serwisów, tokeny SOAP WS-Security, dane HL7/FHIR z ochrony zdrowia lub inne wrażliwe treści. Można to zweryfikować, otwierając zakładkę Sieć w przeglądarce — wklejenie lub konwersja XML nie wyzwoli żadnych żądań sieciowych.
Jak atrybuty XML są mapowane w wynikowym JSON?
Atrybuty XML stają się kluczami JSON z prefiksem @_. Na przykład produkuje obiekt JSON zawierający "@_id": "P01" i "@_category": "electronics" obok kluczy elementów podrzędnych. Gdy element ma zarówno atrybuty, jak i treść tekstową — jak 29.99 — treść tekstowa jest przechowywana pod specjalnym kluczem "#text", więc wynikiem jest { "@_currency": "USD", "#text": "29.99" }. Ta konwencja jest spójna i przewidywalna: @_ zawsze oznacza atrybut, #text zawsze oznacza treść tekstową elementu.
Czy konwerter wymusza typy dla liczb lub wartości logicznych?
Nie. Cała treść tekstowa XML i wartości atrybutów stają się ciągami JSON, niezależnie od tego jak wyglądają. 42 staje się "count": "42", nie 42. true staje się "enabled": "true", nie true. Jest to celowe i ważne: zachowuje wiodące zera (numery telefonów, kody kont, kody ZIP takie jak "01234"), precyzję numeryczną dla wartości takich jak "0.100" oraz wartości ciągów wyglądające jak logiczne. Jeśli potrzebujesz liczb lub wartości logicznych w docelowym JSON, zastosuj wymuszanie typów w swoim własnym kodzie po konwersji — gdzie masz pełną kontrolę nad tym, które pola są konwertowane.
Jak obsługiwane są powtarzające się (o tej samej nazwie siostrzane) elementy?
Pojedynczy element podrzędny staje się obiektem JSON. Dwa lub więcej elementów podrzędnych o tej samej nazwie znacznika pod tym samym rodzicem staje się tablicą JSON. Na przykład a produkuje { "root": { "item": "a" } } — item jest obiektem (ciągiem). Ale ab produkuje { "root": { "item": ["a", "b"] } } — item jest tablicą. Oznacza to, że struktura wynikowego JSON zależy od liczby elementów siostrzanych w XML, co jest jednym z powodów, dla których konwersja XML na JSON jest oparta na konwencjach. Jeśli schemat XML może mieć jeden lub wiele elementów, kod konsumujący musi obsługiwać oba przypadki — obiekt i tablicę.
Czy konwersja XML na JSON jest bezstratna?
Nie. XML ma funkcje, które nie mają odpowiednika w JSON i są odrzucane podczas konwersji: komentarze XML () są odrzucane, instrukcje przetwarzania () są odrzucane, powiązania prefiksów przestrzeni nazw są częściowo zachowywane jako atrybuty @_, ale ich semantyka nie jest, a względna kolejność węzłów o mieszanej zawartości (tekst przeplatany elementami podrzędnymi) może nie zostać w pełni zachowana. Dla czysto strukturalnego XML bez komentarzy ani instrukcji przetwarzania konwersja zachowuje wszystkie nazwy elementów, nazwy atrybutów, wartości atrybutów i treść tekstową. Dla bezstratnej pracy z XML — formatowania, walidacji lub inspekcji XML bez utraty danych — użyj zamiast tego Formatowania XML.
Jak przekonwertować JSON z powrotem na XML?
Użyj naszego narzędzia towarzyszącego Konwerter JSON na XML. Stosuje te same konwencje w odwrotnej kolejności: klucze z prefiksem @_ stają się atrybutami XML, klucze #text stają się treścią tekstową elementów, a tablice JSON stają się powtarzającymi się elementami siostrzanymi o tej samej nazwie. Dzięki temu oba narzędzia są symetryczne dla przypadków użycia z konwersją w obie strony.
Co dzieje się z przestrzeniami nazw XML?
Deklaracje przestrzeni nazw (xmlns="..." i xmlns:prefix="...") są traktowane jako zwykłe atrybuty i pojawiają się w wynikowym JSON jako klucze @_xmlns i @_xmlns:prefix. Prefiks przestrzeni nazw w nazwach elementów jest zachowany jako część klucza nazwy elementu (np. staje się "soap:Body" w JSON). Semantyczne znaczenie przestrzeni nazw — że dwa prefiksy mogą wskazywać na ten sam URI — nie jest interpretowane. Jeśli precyzyjna obsługa przestrzeni nazw jest ważna dla twojego przypadku użycia, parsuj XML w parserze obsługującym przestrzenie nazw zamiast konwertować na JSON.
Dlaczego 0123 staje się "0123" a nie 123?
Ponieważ konwerter nie wykonuje żadnego wymuszania typów. Ciąg "0123" i liczba 123 to różne wartości: "0123" ma wiodące zero, które jest znaczące w wielu kontekstach (kody kont, kody pocztowe, numery identyfikacyjne, identyfikatory z wypełnieniem). Ciche usunięcie tego wiodącego zera spowodowałoby uszkodzenie danych. Bezpiecznym domyślnym zachowaniem jest zachowanie wszystkich wartości jako ciągów dokładnie tak jak pojawiają się w XML. Stosuj parsowanie numeryczne wybiórczo w swoim własnym kodzie dla konkretnych pól, gdzie wiesz, że wartość jest zawsze zwykłą liczbą całkowitą.
Jaka jest różnica między tym narzędziem a formatowaniem XML?
Formatowanie XML reformatuje XML — zmienia wcięcia i białe znaki, ale wyjście nadal jest XML. Ten Konwerter XML na JSON zmienia format całkowicie: wyjście jest dokumentem JSON reprezentującym strukturę XML przy użyciu konwencji atrybutów @_. Używaj formatowania, gdy chcesz czytać, edytować, walidować lub minimalizować XML. Używaj tego konwertera, gdy chcesz pracować z danymi XML w aplikacji JavaScript, przekazać je do REST API lub przechowywać w magazynie dokumentów JSON.
Czy istnieje limit rozmiaru pliku?
Nie ma twardego limitu, ale dane wejściowe większe niż 200 KB automatycznie przełączają się z konwersji na żywo na tryb ręczny. W trybie ręcznym pojawia się przycisk Konwertuj i konwersja uruchamia się tylko po jego kliknięciu — dzięki temu przeglądarka pozostaje responsywna podczas parsowania dużych dokumentów XML. Dla bardzo dużych plików XML (wielomegabajtowych eksportów danych) rozważ narzędzia wiersza poleceń dla lepszej wydajności: python3 -c "import sys, xmltodict, json; print(json.dumps(xmltodict.parse(sys.stdin.read()), indent=2))" lub node -e z dedykowaną biblioteką XML na JSON.
Czy konwerter obsługuje sekcje CDATA?
Tak. Zawartość sekcji CDATA () jest traktowana jako treść tekstowa elementu i pojawia się jako zwykła wartość ciągu w wynikowym JSON. Same ograniczniki CDATA są usuwane — zachowywana jest tylko zawartość wewnątrz. Na przykład produkuje "note": "if (a < b) return;" w JSON. Jest to poprawne zachowanie: CDATA to po prostu sposób osadzania tekstu ze znakami specjalnymi bez ich escapowania; semantycznym znaczeniem jest treść tekstowa.
Czy mogę konwertować XML z wieloma elementami głównymi?
Nie. XML z wieloma elementami głównymi nie jest poprawny strukturalnie, a to narzędzie wymaga poprawnego strukturalnie XML. Jeśli twój parser XML dostarcza ci wiele elementów głównych (co jest powszechne przy łączeniu fragmentów XML), owiń je w jeden element główny przed konwersją. Na przykład, jeśli masz , przekonwertuj to jako . Komunikat błędu wskaże pozycję problemu z poprawnością strukturalną, dzięki czemu można go szybko naprawić.

Powiązane narzędzia

Zobacz wszystkie narzędzia →