Soldaki alana JavaScript yapıştırın ve "Convert"'a tıklayın — XML'e çeviriyoruzJavaScript kodu yapıştırın

Bu araç ne yapıyor

Bir SOAP servisi, RSS feed'i, sitemap ya da test fixture'ı için bir JavaScript nesnesine uyan bir XML payload'unu elle hazırlamak zorunda kaldıysanız o çileyi bilirsiniz. XMLSerializer bir DOM istiyor, DOMParser ters yöne gidiyor ve element'leri elle inşa etmek, ilk üç denemede bir child'ı unutmanız demek. Onun yerine JS'i buraya yapıştırın, tek seferde well-formed XML alın. Düz bir nesne, bir ES6 class'ı ve new instance'ı, ya da derin iç içe herhangi bir şey — hepsi çalışır.

JS değerlerinin XML'e nasıl maplendiğini biliyor. Sayılar ve boolean'lar string biçiminde çıkar. Date nesneleri ISO-8601 olarak verilir. BigInt, ondalık string olarak yazılır (n eki olmadan). null ve undefined alanlar atılmak yerine boş element'lere dönüşür, böylece çıktının şekli sabit kalır. Array'ler container element'lerine dönüşür; her item bir child olur, ismi parent key'in tekil hâlinden gelir — Order içindeki bir items array'i <items><item>...</item></items> olur. Array typed class instance'ları içeriyorsa onun yerine class adı kullanılır.

Class tanımları da işlenir. Bir class Order { constructor(...) { this.x = ...; } } artı const order = new Order(...), constructor'da atanan tüm property'leri taşıyan bir <Order> kökü verir. İç içe class instance'ları iç içe element'ler olarak açılır. Method'lar, getter'lar, Symbol key'li property'ler ve # ile başlayan property'ler (private field'lar) atlanır. Sadece düz bir object literal yapıştırırsanız, mantıklı bir kök element adıyla doğrudan serialize edilir.

Nasıl kullanılır

Üç adım. Kısa bir literal de yapıştırsan tüm bir modülü de yapıştırsan aynı şekilde çalışır.

1

JavaScript kodunuzu yapıştırın (ya da örneği deneyin)

JS'i soldaki editöre olduğu gibi bırakın. Düz bir object literal, bir ES6 class + instance, bir factory function return'u, ya da bir Node.js modül export'u — hepsi olur. Gerçekçi bir Order / OrderItem / Address örneği görmek için Load Sample'a tıklayın.

const, let ve import ifadelerini içerde bırakın. Ayıklamanıza gerek yok — parser etraftaki sarmalayıcı sözdizimini görmezden gelip gerçek değerleri okuyor.

2

Convert'e basın

Yeşil Convert butonuna tıklayın. Araç JS'i okur, her class'ı, array'i ve iç içe nesneyi korur ve XML'i tek seferde üretir. Çalışırken kısa bir loading göstergesi görünür.

3

XML'i kopyalayın

Sağ panel, standartlara uyumlu her XML parser'ın kabul edeceği, düzgün girintilenmiş, well-formed XML ile dolar. SOAP request'inize, RSS template'inize ya da test fixture'ınıza doğrudan kopyalayın.

Ne zaman gerçekten işinize yarar

SOAP request body'si hazırlarken

Bir SOAP isteğini yansıtan düz bir JS nesneniz var ve SoapUI, Postman ya da bir <code>fetch</code> çağrısı için XML body lazım. Nesneyi yapıştır, XML'i kopyala, geç.

RSS ve Atom feed üretmek

title, link ve items içeren bir feed nesnesini, uygun RSS envelope'una sarabileceğiniz well-formed <a href="https://www.w3.org/TR/xml/" target="_blank" rel="noopener">XML</a> iskeletine çevirin — elle element kurmadan.

sitemap.xml dosyalarına başlamak

URL nesnelerinden oluşan bir array yapıştırın, bir <code>&lt;urlset&gt;</code> sitemap için gereken iskeleti alın. Uygun namespace ile değiştirip bitirin.

Integration test seed'i

Jest veya Vitest kurulumunuzdaki fixture nesnelerini, legacy sistemler, mock sunucular ya da hâlâ XML konuşan herhangi bir consumer için XML seed verisine çevirin.

Sık sorulanlar

Düz nesne, ES6 class ve array'lerin üçüyle de çalışıyor mu?

Evet, üçüyle de. Düz bir object literal, key'leri element adı olarak doğrudan serialize edilir. ES6 class artı new instance, kök element olarak class adını kullanır. Array'ler container element olur; her item bir child olur; adı ya element class'ından (item'lar instance'sa) ya da key'in tekilinden gelir.

Date, BigInt ve null nasıl işleniyor?

Date nesneleri ISO-8601 string'lerine dönüşür. BigInt, ondalık string olarak yazılır (n eki düşürülür). null ve undefined property'ler sessizce atılmak yerine boş element'lere (<field/>) dönüşür; böylece aşağıda o element'i bekleyen bir XSD hâlâ valide eder.

Method, getter ve private field'lar ne oluyor?

Class'ın method'ları ve getter'ları atlanır — sadece instance'a gerçekten atanan data property'leri serialize edilir. # ile tanımlanan private field'lar, Symbol key'li property'ler ve prototype üzerindeki (instance'da olmayan) property'ler de atlanır. JSON.stringify'ın yapacağıyla aynı.

Class olmadan sadece bir object literal yapıştırabilir miyim?

Evet. Ham bir const data = { ... } sorunsuz çalışır — dıştaki değişken adı kök element olarak kullanılır, bağlama yoksa genel bir <root> kullanılır. İçindeki iç içe nesneler ve array'ler aynı şekilde iç içe element'ler olarak açılır.

&amp;, &lt; ve &gt; gibi özel karakterleri escape ediyor mu?

Evet. &, <, >, " veya ' içeren metin içeriği ilgili XML entity'lerine escape edilir, böylece çıktı her zaman temiz parse olur. Unicode karakterler olduğu gibi bırakılır, çıktı UTF-8'dir.

Kodum saklanıyor mu?

Kodunuz dönüştürülmek üzere backend'e gönderilir ve saklanmaz — payload'u loglamıyoruz. Tüm online araçlarda olduğu gibi, kod gerçekten hassasa, yapıştırmadan önce bir göz atın.

İşinize yarayabilecek diğer araçlar

JavaScript'ten XML'e, bulmacanın sadece bir parçası. Birlikte iyi giden araçlar: