Skip to content

XML'den JSON'a Dönüştürücü

XML yapıştırın, anında JSON alın. Nitelikleri @_ anahtarlarına dönüştürür, tekrarlanan öğeleri dizi olarak işler. %100 tarayıcı tabanlı, yükleme yok, kayıt gerekmez.

Takip Yok Tarayıcıda Çalışır Ücretsiz
Seçenekler · 2 boşluk · XML → JSON
Girinti
0 karakter
JSON Çıktı
0 satır
Reviewed for XML 1.0 well-formedness handling, @_/#text convention correctness, and string-preservation accuracy — Go Tools Engineering Team · May 29, 2026

XML'den JSON'a Dönüştürme Nedir ve Nasıl Çalışır?

XML (Genişletilebilir İşaretleme Dili) ve JSON (JavaScript Nesne Gösterimi), her ikisi de yapılandırılmış veri formatlarıdır; ancak temelden farklı modellere sahiptirler: XML, niteliklere ve karma içeriğe (alt öğelerle iç içe geçmiş metin) sahip öğe ağacıdır; JSON ise nesneler, diziler, dizeler, sayılar, boolean değerler ve null değerlerden oluşan bir ağaçtır. Aralarında dönüşüm yapmak için uyuşmazlığı kapatacak bir kural seti gerekir.

Bu araç, fast-xml-parser (Node.js), xmltodict (Python) ve JAXB (Java) gibi popüler kütüphanelerin kullandığı en yaygın kuralı kullanır:

**1. Nitelikler → @_ öneki.** XML niteliklerinin doğrudan JSON karşılığı yoktur. Kural, bunları @_ önekli anahtarlar olarak temsil etmektir. , user nesnesi içinde { "@_id": "42", "@_role": "admin" } üretir. Bu önek nettir: geçerli hiçbir XML öğe adı @ile başlamaz, dolayısıyla alt öğe adlarıyla çakışma olmaz.

**2. Niteliklere sahip öğe metin içeriği → #text.** Bir öğenin hem nitelikleri hem de metin içeriği varsa — 29.99 — metnin niteliklerle aynı JSON nesnesini paylaşması gerekir. Kural, onu #text anahtarı altında saklamaktır: { "@_currency": "USD", "#text": "29.99" }. Yalnızca metin içeriği olan ve niteliği olmayan öğeler düz dize değerine dönüşür.

**3. Tekrarlanan kardeş öğeler → diziler.** XML, aynı adda birden fazla alt öğeye izin verir; JSON nesnelerinde yinelenen anahtarlar olamaz. Çözüm, aynı adlı kardeşleri bir dizide toplamaktır. Tek bir alt öğesi nesne olur; iki veya daha fazla alt öğesi nesneler dizisi olur. Bu en önemli davranış ayrıntısıdır: JSON şekli XML'deki kardeş sayısına göre değişir.

**4. Tür dönüşümü yok — tüm değerler dize olarak kalır.** XML'in metin içeriği için yerel tür sistemi yoktur. XML'deki "123" değeri bir dizedir. Onu 123 JSON sayısına dönüştürmek, yazarın niyeti hakkında bir varsayım yapmayı gerektirir — bu, posta kodları ("01234" → 1234), telefon numaraları, dolgulu tanımlayıcılar ve hassasiyet açısından kritik ondalık dizeler için yanlış bir varsayımdır. Bu araç tüm değerleri dize olarak korur.

**5. Yorumlar, işleme talimatları ve ad alanları için kayıplı.** XML, JSON'un desteklemediği özelliklere sahiptir: yorumlar (), işleme talimatları () ve ad alanı anlam bilgileri. Bunlar dönüştürme sırasında atılır veya yaklaştırılır. Kayıpsız XML çalışması için — yeniden biçimlendirme, küçültme, doğrulama — bunun yerine XML Biçimlendirici aracını kullanın. Ters dönüştürme için — JSON'dan XML oluşturma — JSON'dan XML'e Dönüştürücü aracını kullanın.

**XML'i neden JSON'a dönüştürürüz?** JSON, JavaScript'in yerel formatı ve REST API'leri için varsayılan değişim formatıdır. Eski bir SOAP servisinden, RSS beslemesinden, site haritasından veya kurumsal sistemden XML alıyorsanız, onu JSON'a dönüştürmek standart JavaScript nesne erişimi, JSON yol sorguları ve JSON destekli herhangi bir veritabanı veya API kullanarak verilerle çalışmanıza olanak tanır.

// 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"
//       }
//     }
//   }
// }

Temel Özellikler

Canlı Dönüştürme

XML yazarken veya yapıştırırken JSON çıktısı anında güncellenir — Dönüştür düğmesine gerek yok. Büyük girişler (>200KB) tarayıcının yanıt vermeye devam etmesi için otomatik olarak manuel moda geçer.

@_ Nitelik Öneki Kuralı

XML nitelikleri, fast-xml-parser ve xmltodict kuralına göre @_ önekli JSON anahtarlarına dönüşür. , { "@_attr": "val" } olur — geçerli herhangi bir öğe adıyla çakışmayan net bir kural.

Tekrarlanan Öğeler için Otomatik Dizi Algılama

Aynı adlı kardeş öğeler otomatik olarak JSON dizisine dönüşür. Tek → nesne; iki veya daha fazla öğesi → dizi. Yapılandırma gerekmez — araç tekrarları otomatik olarak algılar.

Tür Dönüşümü Yok — Değerler Dize Olarak Kalır

Tüm XML değerleri JSON dizesi olarak korunur. Baştaki sıfırlar, telefon numaraları, dolgulu kodlar ve "true" veya "false" gibi boolean benzeri dizeler hiçbir zaman sessizce sayıya veya boolean'a dönüştürülmez.

%100 Tarayıcı Tabanlı Gizlilik

Tüm dönüştürme, JavaScript kullanılarak tarayıcınızda yerel olarak çalışır. Kimlik bilgileri, dahili yapılandırmalar ve hassas yükler içeren XML'iniz hiçbir sunucuya gönderilmez, kayıt altına alınmaz ve saklanmaz.

İyi Biçimlilik Hata Raporlama

XML'iniz iyi biçimli değilse araç, hemen sorunu bulup düzeltebilmeniz için ilk hatanın tam satır ve sütun numarasını raporlar.

Örnekler

Yapılandırma Dosyası

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

Nitelikleri ve iç içe öğeleri olan küçük bir uygulama yapılandırması. Nitelikler JSON çıktısında @_ önekli anahtarlara dönüşür: version="2.1", appConfig altında "@_version": "2.1" olur; pool öğesinin max ve min nitelikleri ise "@_max": "10" ve "@_min": "2" olur. Port ve ttl dahil tüm değerler sayı değil dize olarak kalır; dönüştürücü tür dönüşümü yapmaz.

Site Haritası Parçacığı

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

İki URL içeren bir sitemap.xml parçacığı. altında iki kardeş öğesi bulunduğundan bunlar JSON dizisine dönüşür. xmlns ad alanı bildirimi, urlset nesnesinde "@_xmlns" olarak yer alır. "0.8" değeri sayıya dönüştürülmeden dize olarak kalır; böylece "0.08" gibi sıfırla başlayan değerler de tam olarak korunur.

RSS Öğesi

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

Bir RSS 2.0 öğesi. guid öğesinin isPermaLink niteliği var; bu nedenle JSON çıktısında guid, "@_isPermaLink": "true" ve "#text": "https://go-tools.org/blog/xml-to-json-guide" olan kardeş anahtarlara sahip bir nesne olur. Diğer tüm öğelerin yalnızca metin içeriği vardır ve doğrudan dize değerlerine dönüştürülür.

Nasıl Kullanılır

  1. 1

    XML'inizi Yapıştırın

    XML'inizi yukarıdaki giriş alanına girin veya yapıştırın. Bir örnek denemek için 'Örnek yükle' düğmesine de tıklayabilirsiniz — yapılandırma dosyası, site haritası parçacığı veya RSS öğesi.

  2. 2

    Canlı JSON Çıktısını Görün

    JSON çıktı panelinde anında görünür. Nitelikler @_ önekli anahtarlara, karma öğelerin metin içeriği #text'e ve tekrarlanan kardeş öğeler dizilere dönüşür. Gerekirse girinti (2 veya 4 boşluk) ayarlayın.

  3. 3

    Kopyalayın veya İndirin

    JSON'u panoya almak için Kopyala'ya veya uygulamanız, API'niz ya da veri hattınız için hazır .json dosyası olarak kaydetmek için İndir'e tıklayın.

Yaygın Dönüştürme Tuzakları

Değerlerin Dize Olarak Kaldığını Unutmak

Dönüştürücü tür dönüşümü yapmaz. Sonraki kodunuz JSON sayıları bekliyorsa ancak XML sayısal dizeler içeriyorsa, dönüştürdükten sonra bunları açıkça dönüştürmeniz gerekir. Örtük dize-sayı dönüşümüne (JavaScript'in == veya aritmetik operatörlerine) güvenmek hataya açıktır — her zaman parseInt(), parseFloat() veya Number() kullanın.

✗ Yanlış
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }  ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... }  // "30" > 25 coerces, but fragile
✓ Doğru
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }
// Safe: explicit coercion where you know the type
if (parseInt(config.timeout, 10) > 25) { ... }

Tek Öğe ile Dizi Şekli Uyuşmazlığı

Yalnızca bir öğesi olduğunda çıktı nesnedir; iki veya daha fazla olduğunda dizi olur. Her zaman result.items.forEach() yapan tüketici kodu, items tek bir nesne olduğunda çöker. Şemanız bir ya da çok sayıda öğeye izin veriyorsa dönüştürdükten sonra her zaman diziye normalleyin.

✗ Yanlış
// 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
✓ Doğru
// Normalize to array regardless of count
const items = [].concat(result.root?.item ?? []);
items.forEach(i => console.log(i));  // safe for 0, 1, or many

Karma İçerik: Metin ve #text Anahtarı

Bir öğenin hem nitelikleri hem de metin içeriği varsa metin #text altında yer alır. Metin değerine düz dize gibi erişmek yerine nesne döner. Nitelikler mümkünse bir öğe değerinin dize mi yoksa #text anahtarlı nesne mi olduğunu her zaman kontrol edin.

✗ Yanlış
// 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"
✓ Doğru
// Handle both plain string and @_/#text object
const raw = result.price;
const amount = typeof raw === 'object' ? raw['#text'] : raw;  // "29.99"

İyi Biçimli Olmayan XML Girişi

Dönüştürücü iyi biçimli XML gerektirir. İyi biçimlilik hatalarının yaygın nedenleri: metin içeriğinde kaçış karakteri eklenmemiş & (& kullanın), eşleşmeyen etiketler ( ile — XML büyük/küçük harfe duyarlıdır), birden fazla kök öğe veya kapatılmamış etiketler. Hata mesajı ilk sorunun satır ve sütununu gösterir.

✗ Yanlış
<!-- Unescaped & — well-formedness error -->
<query>name = 'Alice' & role = 'admin'</query>
✓ Doğru
<!-- Escaped & — valid XML -->
<query>name = 'Alice' &amp; role = 'admin'</query>

Tür Dönüşümüyle Bozulan Baştaki Sıfır Değerleri

Bu araç tür dönüşümü yapmadığından baştaki sıfırları korur. JSON'u tür dönüşümü yapan bir kütüphaneyle (bazı JSON şema doğrulayıcıları, ORM eşleştiricileri) işliyorsanız baştaki sıfır kaybolabilir. Şemanızda alanı her zaman açıkça dize olarak bildirin.

✗ Yanlış
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" }  ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() }  → 1234  ← leading zero lost
✓ Doğru
// Declare ZIP codes and other padded identifiers as strings
// { zipCode: z.string() }  → "01234"  ← correct

Yaygın Kullanım Senaryoları

SOAP / Eski XML API'lerini Tüketme
Eski kurumsal servisler (bankacılık, sigortacılık, lojistik) çoğunlukla XML döndüren SOAP API'leri sunar. Modern JavaScript araçlarıyla verilerle çalışmak, belge veritabanında saklamak veya REST API tüketicisine iletmek için yanıtı JSON'a dönüştürün.
RSS ve Atom Beslemelerini İşleme
RSS 2.0 ve Atom 1.0 beslemeleri XML'dir. Besleme toplayıcıları, içerik hatları ve bildirim sistemleri için XML ayrıştırma kütüphanesi bağımlılığı olmadan başlıkları, bağlantıları, yayın tarihlerini ve açıklamaları çıkarmak üzere besleme XML'ini JSON'a dönüştürün.
Site Haritası Dosyalarını Ayrıştırma
sitemap.xml dosyaları, bir sitenin URL'lerini meta verilerle birlikte listeler. URL kapsamını analiz etmek, tarama kuyruğu oluşturmak, ortamlar arasında site haritalarını karşılaştırmak veya URL'leri bağlantı denetleyicisine ya da SEO denetim aracına aktarmak için site haritasını JSON'a dönüştürün.
Yapılandırma Dosyalarını Dönüştürme
Pek çok kurumsal sistem (Spring, Maven, Ant, JBoss, Tomcat) XML yapılandırma dosyaları kullanır. Analiz, geçiş komut dosyası oluşturma, belgeleme veya yerel olarak JSON konuşan araçlara aktarma için bunları JSON'a dönüştürün.
Mobil ve Android Geliştirme
Android kaynakları, düzen dosyaları ve AndroidManifest.xml'nin tümü XML'dir. Analiz betikleri, otomatik denetim veya bildirilen izinler, aktiviteler ve kaynak değerleri hakkında belge oluşturma için bunları JSON'a dönüştürün.
Veri Geçişi ve ETL
Kurumsal sistemlerden (ERP, CRM, bordro) gelen veri dışa aktarmaları çoğunlukla XML olarak gelir. Veriyi MongoDB, Firestore veya REST API gibi JSON tabanlı bir veri deposuna yüklemek için ETL hattının ilk adımı olarak JSON'a dönüştürün.

Teknik Ayrıntılar

XML Ayrıştırma için Tarayıcı DOMParser
XML girişi, tarayıcının yerel DOMParser'ı ile 'text/xml' MIME türü kullanılarak ayrıştırılır — SVG ve XHTML oluşturmak için kullanılan motorla aynı. Tam XML 1.0 uyumludur ve iyi biçimlilik hatalarını satır ve sütun bilgileriyle raporlar. Bu yaklaşım, üçüncü taraf bağımlılığı olmadan ad alanlarını, CDATA bölümlerini, işleme talimatlarını ve varlık referanslarını doğru şekilde işler.
Özyinelemeli DOM'dan JSON'a Serileştirme
Ayrıştırmanın ardından araç DOM ağacında özyinelemeli olarak yürür. Öğe düğümleri JSON nesnesi olur; nitelikleri @_ önekli anahtara; yalnızca metinli öğeler düz dize değerine; hem nitelikleri hem de metin içeriği olan öğeler ise metin içeriği için #text anahtarı kazanır. Aynı adlı kardeş öğeler toplanarak JSON dizisi olarak çıkarılır. Öğeler arasındaki yalnızca boşluk içeren metin düğümleri atılır.
Tür Dönüşümü Yok — Dize Koruması
Tüm nitelik değerleri ve metin içeriği JSON çıktısına dize olarak yazılır. Hiçbir parseInt, parseFloat veya boolean ayrıştırma uygulanmaz. Bu, baştaki sıfır değerleri, hassasiyet açısından kritik ondalıklar ve boolean benzeri dizeler için sessiz veri bozulmasını önleyen bilinçli bir tasarım tercihidir.
%100 Tarayıcı Tabanlı — Yükleme Yok, Sunucu Yok
Tüm işlem tarayıcınızın JavaScript motorunda gerçekleşir. Hiçbir veri hiçbir noktada ağ üzerinden iletilmez. 200KB'ı aşan girişler, yoğun DOM dolaşımı sırasında tarayıcının yanıt vermeye devam etmesini sağlamak için otomatik olarak canlı moddan manuel moda (açık bir Dönüştür tıklaması gerektirir) geçer.

En İyi Uygulamalar

Önce XML İyi Biçimliliğini Doğrulayın
XML kaynağınız elle yazılmış veya zaman zaman hatalı biçimli çıktı üreten bir sistemden geliyorsa, dönüştürmeden önce doğrulayın. XML'in iyi biçimli olduğunu onaylamak ve sorunlar için kesin hata konumları almak üzere XML Biçimlendirici'nin Doğrula düğmesini kullanın.
Bir veya Çok Sayıda Alanı Diziye Normalleyin
XML şemanız aynı adda bir ya da çok sayıda alt öğeye izin verdiğinde, JSON çıktısı tek öğe için nesne, çok sayıda öğe için dizi olur. Tüketici kodunuzda bu alanları her zaman normalleyin: const items = [].concat(result.items ?? []) — sıfır, bir veya çok sayıda için güvenlidir ve TypeError'ları önler.
Tür Dönüşümünü Açıkça ve Seçici Olarak Uygulayın
Bu araç tüm değerleri dize olarak koruduğundan, ihtiyacınız olan belirli alanlar için bilinçli şekilde tür dönüşümü uygulayın. Bilinen bir tam sayı alanı için parseInt(val, 10) kullanmak güvenlidir. Number(val) ile geniş kapsamlı tür dönüşümü uygulamak, baştaki sıfır değerlerini, boş dizeleri ve hassasiyet açısından kritik ondalıkları bozma riskini taşır.
Öğe Değerlerine Erişirken #text Olup Olmadığını Kontrol Edin
Bir öğe bazı yüklerde niteliklere sahip olabilir, bazılarında olmayabilirse JSON değeri ya düz dize (nitelik yok) ya da @_ anahtarları ve #text anahtarı olan nesne (niteliklerle) olur. Sağlam erişimciler yazın: const val = typeof node === 'object' ? node['#text'] : node. Bu kalıp her iki şekli de işler ve sessiz undefined değerlerini önler.
Kayıpsız XML Çalışması için XML Biçimlendirici Kullanın
XML'den JSON'a dönüştürme, yorumları, işleme talimatlarını ve ad alanı anlam bilgilerini atar. Tüm XML içeriğini tam olarak korumak istiyorsanız, kayıp olmadan güzelleştirmek, küçültmek ve doğrulamak için XML Biçimlendirici'yi kullanın. JSON'a yalnızca verileri JSON yerel bir bağlamda işlemeniz gerektiğinde dönüştürün.

Sıkça Sorulan Sorular

Bu aracı kullandığımda XML verilerim sunucuya gönderiliyor mu?
Hayır. Tüm dönüştürme işlemi tamamen tarayıcınızda JavaScript kullanılarak gerçekleşir. XML'iniz ağ üzerinden iletilmez, hiçbir sunucuda saklanmaz ve kayıt altına alınıp analiz edilmez. Bu, aracı API kimlik bilgileri, dahili servis yapılandırması, SOAP WS-Security belirteçleri, sağlık hizmeti HL7/FHIR verileri veya diğer hassas içerikler barındıran XML yükleriyle güvenle kullanmanızı sağlar. Tarayıcınızın Ağ sekmesini açarak doğrulayabilirsiniz — XML yapıştırıp dönüştürdüğünüzde sıfır istek tetiklendiğini göreceksiniz.
XML nitelikleri JSON çıktısında nasıl eşlenir?
XML nitelikleri @_ önekiyle JSON anahtarlarına dönüşür. Örneğin , o öğe için herhangi bir alt öğe anahtarının yanı sıra "@_id": "P01" ve "@_category": "electronics" içeren bir JSON nesnesi üretir. Bir öğenin hem nitelikleri hem de metin içeriği varsa — 29.99 gibi — metin içeriği "#text" özel anahtarı altında saklanır; sonuç { "@_currency": "USD", "#text": "29.99" } olur. Bu kural tutarlı ve öngörülebilirdir: @_ her zaman nitelik, #text her zaman öğe metin içeriği anlamına gelir.
Dönüştürücü sayıları veya boolean değerleri tür dönüşümüne uğratıyor mu?
Hayır. Tüm XML metin içeriği ve nitelik değerleri, nasıl görünseler olursa olsun JSON dizelerine dönüştürülür. 42, "count": 42 değil "count": "42" olur. true ise true değil "enabled": "true" olur. Bu kasıtlı ve önemlidir: baştaki sıfırları (telefon numaraları, hesap kodları, "01234" gibi posta kodları), "0.100" gibi değerlerde sayısal hassasiyeti ve boolean gibi görünen dize değerlerini korur. Sayılara veya boolean değerlere ihtiyaç duyuyorsanız, dönüştürdükten sonra kendi kodunuzda tür dönüşümü uygulayın.
Tekrarlanan (aynı adlı kardeş) öğeler nasıl işlenir?
Tek bir alt öğe JSON nesnesine dönüşür. Aynı ebeveyn altında aynı etiket adına sahip iki veya daha fazla alt öğe JSON dizisine dönüşür. Örneğin a, { "root": { "item": "a" } } üretir — item bir nesnedir (dize). Ancak ab, { "root": { "item": ["a", "b"] } } üretir — item bir dizidir. Bu, JSON çıktısının yapısının XML'deki kardeş öğe sayısına bağlı olduğu anlamına gelir. Şemanız bir ya da çok sayıda öğeye izin veriyorsa tüketici kodunuzun hem nesne hem de dizi durumlarını işlemesi gerekir.
XML'den JSON'a dönüştürme kayıpsız mı?
Hayır. XML'in JSON'da karşılığı olmayan ve dönüştürme sırasında atılan özellikleri vardır: XML yorumları () atılır, işleme talimatları () atılır, ad alanı öneki bağlamaları kısmen @_ nitelik olarak korunur ancak anlam bilgileri korunmaz. Yorum veya işleme talimatı içermeyen yalnızca yapısal XML için dönüştürme, tüm öğe adlarını, nitelik adlarını, nitelik değerlerini ve metin içeriğini korur. Kayıpsız XML çalışması için — biçimlendirme, doğrulama veya veri kaybı olmaksızın inceleme — bunun yerine XML Biçimlendirici aracını kullanın.
JSON'u tekrar XML'e nasıl dönüştürürüm?
Yardımcı JSON'dan XML'e Dönüştürücü aracımızı kullanın. Aynı kuralları tersine uygular: @_ önekli anahtarlar XML niteliklerine, #text anahtarları öğe metin içeriğine ve JSON dizileri tekrarlanan aynı adlı kardeş öğelere dönüşür. Bu, iki aracı gidiş-dönüş kullanım senaryoları için simetrik kılar.
XML ad alanlarına ne olur?
Ad alanı bildirimleri (xmlns="..." ve xmlns:prefix="...") normal nitelikler olarak değerlendirilir ve JSON çıktısında @_xmlns ile @_xmlns:prefix anahtarları olarak görünür. Öğe adlarındaki ad alanı öneki, öğe adı anahtarının parçası olarak korunur (örneğin , JSON'da "soap:Body" olur). İki farklı önekin aynı URI'yi gösterebileceği ad alanlarının anlam bilgileri yorumlanmaz. Kullanım durumunuz için kesin ad alanı işlemesi önemliyse, JSON'a dönüştürmek yerine XML'i ad alanı farkında bir ayrıştırıcıyla işleyin.
0123 neden 123 değil "0123" oluyor?
Çünkü dönüştürücü tür dönüşümü yapmaz. "0123" dizesi ile 123 sayısı farklı değerlerdir: "0123" pek çok bağlamda (hesap kodları, posta kodları, ulusal kimlik numaraları, dolgulu tanımlayıcılar) anlamlı olan baştaki sıfıra sahiptir. Bu baştaki sıfırın sessizce atılması veriyi bozar. Güvenli varsayılan, tüm değerleri XML'de göründükleri gibi dize olarak korumaktır. Değerin her zaman düz bir tam sayı olduğunu bildiğiniz belirli alanlar için kendi kodunuzda sayısal ayrıştırmayı seçici olarak uygulayın.
Bu araç ile XML biçimlendirici arasındaki fark nedir?
XML Biçimlendirici, XML'i yeniden biçimlendirir — girinti ve boşlukları değiştirir ancak çıktı yine XML'dir. Bu XML'den JSON'a Dönüştürücü ise formatı tamamen değiştirir: çıktı, @_ nitelik kuralını kullanan XML yapısını temsil eden bir JSON belgesidir. XML'i okumak, düzenlemek, doğrulamak veya küçültmek istediğinizde biçimlendiriciyi kullanın. XML verilerini bir JavaScript uygulamasında işlemeniz, REST API'ye aktarmanız veya bir JSON belge deposunda saklamanız gerektiğinde bu dönüştürücüyü kullanın.
Dosya boyutu sınırı var mı?
Sabit bir sınır yoktur; ancak 200KB'ı aşan girişler otomatik olarak canlı dönüştürmeden manuel moda geçer. Manuel modda bir Dönüştür düğmesi görünür ve dönüştürme yalnızca siz tıkladığınızda çalışır — bu, büyük XML belgelerini ayrıştırırken tarayıcının yanıt vermeye devam etmesini sağlar. Çok büyük XML dosyaları için daha iyi performans amacıyla komut satırı araçlarını kullanmayı düşünün: python3 -c "import sys, xmltodict, json; print(json.dumps(xmltodict.parse(sys.stdin.read()), indent=2))" veya özel bir XML'den JSON'a kütüphaneyle node -e.
Dönüştürücü CDATA bölümlerini işliyor mu?
Evet. CDATA bölümü içeriği () öğe metin içeriği olarak değerlendirilir ve JSON çıktısında düz dize değeri olarak görünür. CDATA sınırlayıcılarının kendisi atılır — yalnızca içerideki içerik korunur. Örneğin , JSON'da "note": "if (a < b) return;" üretir. Bu doğru davranıştır: CDATA, özel karakterleri kaçış karakteri eklemeden metnin gömülmesi için yalnızca bir yoldur; anlam bilgisi metin içeriğidir.
Birden fazla kök öğeli XML'i dönüştürebilir miyim?
Hayır. Birden fazla kök öğeli XML iyi biçimli değildir ve bu araç iyi biçimli XML girişi gerektirir. XML ayrıştırıcınız size birden fazla kök öğe veriyorsa (XML parçacıklarını birleştirirken yaygındır), dönüştürmeden önce bunları tek bir kök öğeye sarın. Örneğin varsa, olarak dönüştürün. Hata mesajı, iyi biçimlilik sorununu hızlıca düzeltebilmeniz için sorunun konumunu gösterir.