§

Giriş

Mod
§

Çıktı

Türkiye'deki ekipler XML ile JSON arasındaki köprüyü her gün kurar; genellikle bir yığının iki yarısı hangi biçimi konuştuğu konusunda anlaşmazlık içinde olduğundan. Sağlık Bakanlığı ve SGK, FHIR kaynaklarını XML ve JSON olarak yayımlar. Ziraat Bankası ve Garanti BBVA gibi büyük bankalar hâlâ SOAP XML zarfları döndüren servislere sahipken React ön uçları JSON ister. Trendyol ve Hepsiburada ürün akışlarında XML kullanır; veri mühendisleri bunları Snowflake veya BigQuery'ye yüklemeden önce JSON'a dönüştürür. Bu aracı kullanmak, bir Python betiği çalıştırmak yerine dönüşümü tarayıcıda yerel olarak yapar; yalıtılmış ortamlarda veya hassas yüklerin bilinmeyen bir web servisine yapıştırılmasının mümkün olmadığı durumlarda özellikle kullanışlıdır.

XML ↔ JSON dönüşümü nedir?

XML (Genişletilebilir İşaretleme Dili), hiyerarşik veriler için etiket tabanlı bir metin biçimidir. SOAP web servislerinde, RSS ve Atom akışlarında, HL7 FHIR sağlık kayıtlarında, sitemap.xml dosyalarında ve Maven, Spring ve Android Gradle ile birlikte gelen yapılandırma dosyalarında karşılaşırsınız. JSON (JavaScript Nesne Gösterimi, RFC 8259 ile tanımlandı), aynı tür iç içe verileri açıklar; ancak açılıp kapanan etiketler yerine süslü parantezler ve diziler kullanır. JSON, bugün neredeyse her REST API'nin konuştuğu dildir ve her tarayıcı çalışma zamanının yerel değer şeklidir. İki biçim arasında dönüşüm yapmak, öznitelikler, karışık içerik, tekrarlanan alt öğeler ve CDATA ile karşılaşana kadar önemsiz görünür. Özel bir regex yanlış yanıttır; gerçek bir ayrıştırıcı doğru yanıttır. Bu araç gerçek bir ayrıştırıcı (fast-xml-parser) gönderir ve tarayıcınızda çalıştırır; böylece eski bir SOAP servisi tarafından döndürülen bir XML zarfını yapıştırabilir ve onu doğrudan bir Redux deposuna bırakabileceğiniz bir JSON nesnesine dönüştüğünü izleyebilir ya da bir REST istemcisinde derlediğiniz bir JSON yükünü alıp kurumsal bir uç noktanın hâlâ beklediği XML şekline geri dönüştürebilirsiniz.

XML ↔ JSON eşlemesi nasıl çalışır?

Her dönüşüm, paketlenmiş fast-xml-parser kütüphanesini (MIT, sürüm 4.x) kullanarak tarayıcınızda yerel olarak çalışır. Üst düzey eşleme kuralları şunlardır:

  1. Öğeden anahtara: her XML öğe adı bir JSON nesne anahtarı olur. <user><name>Alice</name></user>, {"user":{"name":"Alice"}}'e eşlenir.
  2. Öznitelikten önekli anahtara: bir öznitelik, seçilen önek eklenerek oluşturulan bir anahtar altında saklanır. @ önekiyle <user id="1">, {"user":{"@id":"1"}} üretir.
  3. Metin içeriğinden metin düğümü anahtarına: bir öğenin hem öznitelikleri hem de metni olduğunda, metin seçilen metin düğümü anahtarının altına düşer. #text anahtarıyla <price currency="USD">9.99</price>, {"price":{"@currency":"USD","#text":"9.99"}} üretir.
  4. Tekrarlanan alt öğelerden diziye: Tekrarlanan alt etiketler için dizi zorla açıkken, aynı ada sahip birden fazla kardeş öğe bir JSON dizisine çöker. <items><item>A</item><item>B</item></items>, {"items":{"item":["A","B"]}} olur.
  5. CDATA bölümleri: <![CDATA[…]]> içindeki ham metin, gidiş-dönüş sırasında açı parantezleri ve ve işaretlerinin yeniden kaçırılmaması için #cdata anahtarı altında korunur.
  6. JSON'dan XML'e eşlemeyi tersine çevirir: nesne anahtarları öğe olur, önekli anahtarlar öznitelik olur ve diziler tekrarlanan kardeş öğelere genişler.

XML ve JSON'u bu araçla neden dönüştürmelisiniz?

  • Verileriniz makinenizde kalır. Her ayrıştırma ve her oluşturma, bu sayfanın JavaScript bağlamında çalışır. FHIR hasta paketleri, SOAP kimlik doğrulama zarfları, özel yapılandırma dosyaları, fatura dışa aktarmaları — hiçbiri sunucularımıza dokunmaz; çünkü kod yolunda yükleme adımı yoktur. Ağ panelini açın ve izleyin.
  • Eski SOAP'ı REST öncelikli ön uca dönüştürmek, duyduğumuz en yaygın taleptir. Bir banka veya sigorta şirketi, yıllarca emekliye ayrılmayacak bir SOAP uç noktası sunar; onu çağıran React veya Vue uygulaması XML öğrenmek istemez. Zarfı yapıştırın, öznitelikler öneklenmiş ve ad alanları korunmuş halde JSON'u geri alın, Body içeriğini durum deponuza bırakın.
  • RSS, Atom ve site haritası tüketicileri de yararlanır. Bir podcast dizini, haber toplayıcı veya sitemap.xml alan dahili bir gösterge paneli, XML ayrıştırıcı yazmayı tamamen atlayabilir. Akışı bir kez dönüştürün, JSON dizisiyle çalışın ve istemci kodunuz zaten konuştuğu dilde kalır.
  • Yapılandırma dışa aktarması listeyi tamamlar. Maven, Spring, Android Gradle ve eski usul Ant yapıları XML yayımlar; diğer taraftaki bulut-yerel araçlar (Terraform, Ansible, GitHub Actions, cloud-init) JSON veya YAML okur. Özellikle bilinmeyen bir web servisine yapıştırmanın mümkün olmadığı yalıtılmış ortamlarda, üçüncü taraf bağımlılığı olan bir Python betiği çalıştırmak yerine tarayıcıda dönüştürün.

XML ↔ JSON dönüşümünün yaygın uygulamaları nelerdir?

XML ile JSON arasındaki köprü, entegrasyon mühendisliği, API araçları ve veri mühendisliğinde karşımıza çıkar. İş yükünde birkaç örüntü ön plana çıkar:

  • SOAP'tan REST'e köprüleme: eski bir bankacılık veya sigorta API'si tarafından döndürülen bir SOAP zarfından Body yükünü çekip onu JSON'a dönüştürerek önünde sunucu taraflı proxy katmanı olmadan bir React veya Vue ön ucunun tüketmesini sağlamak.
  • FHIR sağlık kayıtları: klinisyen veri alışverişi için HHS/ONC ve NHS Digital tarafından zorunlu tutulan HL7 FHIR XML paketlerini, analistlerin sorgulayabileceği bir MongoDB Atlas koleksiyonuna veya PostgreSQL JSONB sütununa yüklemek için JSON'a dönüştürmek.
  • Site haritası ve akış işleme: özel bir dizin oluşturucu, Slack botu veya gösterge paneli widget'ının bağımlılık olarak XML ayrıştırıcı çekmeden girişler üzerinde yineleme yapabilmesi için bir sitemap.xml veya RSS/Atom akışını JSON dizisine dönüştürmek.

XML ↔ JSON gidiş-dönüşü nasıl görünür?

Küçük bir örnek alın. <user id="1"><name>Alice</name></user>'yi girişe yapıştırın, öznitelik önekini @ olarak ayarlayın, modu XML'den JSON'a bırakın ve Dönüştür'e basın. Çıktı {"user":{"@id":"1","name":"Alice"}}'dir. Modu JSON'dan XML'e çevirin, o JSON'u tekrar yapıştırın, girintiyi 2 boşluk olarak ayarlayın ve tekrar Dönüştür'e basın. <user id="1">\n <name>Alice</name>\n</user> çıktısını alırsınız; orijinalle yapısal olarak özdeş. Gidiş-dönüşte garanti edilmeyen tek şey öznitelik sırasıdır; çünkü JSON nesne anahtarları spec gereği sırasızdır.

Bu XML ↔ JSON dönüştürücü, aynı kaynak üzerinde paketlenmiş fast-xml-parser@4'ü gönderir; öznitelikleri, CDATA'yı, tekrarlanan alt etiketleri ve ad alanı öneklerini işler; sayfa yüklendikten sonra çevrimdışı çalışmaya devam eder. Yükleme adımı yok, CDN proxy yok, analitik işaret yok, hiçbir tür telemetri yok. Girdi ve çıktının her baytı tarayıcınızda kalır; bu da tam olarak yükün bir FHIR hasta paketi, SOAP kimlik doğrulama zarfı veya takımınız dışında kimsenin görmemesi gereken herhangi bir veri şekli olduğunda istediğiniz şeydir.