Dart'tan XML'e Dönüştürücü
Dart sınıflarını veya nesnelerini yapıştır. Temiz XML al.
Bu araç ne yapar
Bir Dart modeline uyması için XML payload’ını elle şekillendirmek zorunda kaldıysan — eski bir SOAP endpoint’iyle konuşan bir Flutter uygulaması, Android tarzı bir XML yapılandırması ya da bir RSS feed okuyucusu için — o boilerplate’in ne kadar kalabalık olduğunu biliyorsundur. Dart’ı buraya yapıştır ve araç tek seferde iyi biçimlendirilmiş XML geri versin. final alanlı bir sınıf, komple bir model dosyası ya da doldurulmuş bir örnek — sonuç aynı: her alanın korunduğu eksiksiz bir XML belgesi.
Saf bir string-replace değil. Dönüştürücü gerçek Dart okur: required adlandırılmış parametreler bildirim sırasına göre element olur, final alanlar final olmayanlarla aynı davranır, DateTime değerleri ISO-8601 string olarak render edilir, Duration ISO-8601 süre biçimini kullanır, num, int ve double sayısal biçimini korur, null (String? gibi nullable tiplerden gelen) atılmak yerine boş element olur ve List<T> öğe başına bir çocuğu olan bir konteyner elementi olur — xml paketinin XmlBuilder’ının üreteceği şeyle aynı.
Sınıf yapısı korunur. Her üst düzey sınıf, sınıf adından türetilmiş bir kök element olur; her alan bir çocuk element olur; iç içe sınıflar satır içi açılır ve Map<K, V>, <entry><key/><value/></entry> çiftlerine dönüşür. json_annotation’dan gelen @JsonKey(name: "x") gibi annotasyonlar, element adını değiştirme ipucu olarak dikkate alınır. Bir Flutter modeli, freezed tarzı bir data class ya da sade bir Dart POJO yapıştır — XML, elle yazılmış bir XmlBuilder çağrısının üreteceği gibi görünür, ama o kadar zahmete girmeden.
Nasıl kullanılır
Üç adım. Tek bir model ya da komple bir <code>lib/models</code> klasörü yapıştırsan da akış aynı.
Dart’ını yapıştır (ya da örneği dene)
Dart’ı soldaki editöre olduğu gibi bırak. Normal bir sınıf, adlandırılmış kurucusu olan bir data class, birden fazla sınıf ya da doldurulmuş bir örnek — hepsi uyar. Gerçekçi bir Order örneği görmek için önce Örneği yükle’ye tıkla.
Import’ları kaldırmak, part yönergelerini silmek ya da annotasyonları temizlemek zorunda değilsin. Kod, IDE’nde göründüğü gibi kalsın. Sadece yapıştır.
Dönüştür’e bas
Yeşil Dönüştür düğmesine tıkla. Araç Dart’ı okur, her sınıfı ve alanı korur ve XML’i tek geçişte oluşturur. Çalışırken kısa bir yükleme göstergesi görünür.
XML’i kopyala
Sağdaki panel, standartlara uyan herhangi bir parser’ın kabul edeceği girintili ve iyi biçimlendirilmiş XML ile dolar. Bir SOAP isteğine, bir Flutter asset dosyasına, Android tarzı bir yapılandırmaya veya birim testi fixture’ına doğrudan bırak.
Gerçekten işe yaradığı anlar
SOAP servisleriyle konuşan Flutter uygulamaları
Flutter uygulamanın eski bir SOAP endpoint’ini çağırması ve istek gövdesinin bir Dart modeliyle eşleşmesi gerekiyor. Modeli yapıştır, XML’i al, <code>http.post</code>’a veya <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a> paketine ver.
RSS ve Atom feed üreticileri
RSS yayınlayan bir podcast ya da haber uygulaması mı yapıyorsun? Bölüm modelini yapıştır, ihtiyacın olan XML şeklini al, sonra feed zarfıyla sar — <code><item></code> çocuklarını elle saymaya gerek yok.
Native Android/iOS XML yapılandırmaları
Platform channel’larda kullandığın bir Dart modelinden Android tarzı bir preferences XML’i ya da iOS plist benzeri bir yapı üretmen mi gerekiyor? Sınıfı yapıştır, üzerine ince ayar yapabileceğin bir şablon al.
flutter_test için test fixture’ları
Doldurulmuş bir modeli <code>flutter_test</code>, widget golden testleri veya mock HTTP yanıtları için bir XML fixture dosyasına dönüştür — fixture string’lerini elle yazmaktan çok daha hızlı.
Sık sorulan sorular
Birden fazla sınıfı bir kerede yapıştırabilir miyim?
Evet — komple bir models.dart dosyası veya eksiksiz bir model klasörü yapıştırabilirsin. Her üst düzey sınıf, iç içe sınıfları açılmış ve ebeveyn sınıflardan gelen alanları dahil edilmiş olarak çıkar. Mixin’ler alanlarını katıyormuş gibi ele alınır. Hiçbir şey sessizce atılmaz.
freezed veya json_serializable data class’larıyla çalışır mı?
Evet. freezed tarzı immutable sınıflar ve json_serializable ile annote edilmiş modeller normal Dart sınıfları gibi ele alınır — alanlar geçer ve @JsonKey(name: "x") element adını değiştirme ipucu olarak dikkate alınır. Önceden build_runner çalıştırmana veya üretilmiş .g.dart dosyasını yapıştırmana gerek yok.
DateTime, Duration, null ve num nasıl ele alınır?
DateTime, ISO-8601 string olarak render edilir (2026-04-21T10:15:00.000Z). Duration, ISO-8601 süre olarak (PT2H30M) veya HH:mm:ss yedeğiyle render edilir. null değere sahip nullable tipler, atlanmak yerine boş element olur (<field/>); böylece XML yapısı tutarlı kalır. num, int ve double hepsi düz ondalık metin olarak serileştirilir.
Peki List, Map ve iç içe sınıflar?
List<T>, öğe başına bir çocuğu olan ve eleman türünün adını taşıyan bir konteyner elementi olur — bir List<OrderItem> items, <items><OrderItem/><OrderItem/></items> olur. Map<K, V>, <entry><key/><value/></entry> çiftlerine dönüşür. İç içe sınıflar, xml paketinin XmlBuilder’ının iç içe elementler ürettiği gibi satır içi açılır.
Kodum saklanıyor mu?
Dart’ın dönüşüm için arka uca gönderiliyor ve kalıcı olarak saklanmıyor — payload’ı loglamıyoruz. Çevrimiçi araçlarda her zaman olduğu gibi, kod gerçekten hassas literaller içeriyorsa (API anahtarları, token’lar) yapıştırmadan önce temizle ya da mockla.
Sınıf dynamic veya Object? alanlar kullanıyorsa?
dynamic veya Object? olarak yazılmış alanlar, gerçek şekil yalnızca çalışma zamanında bilindiği için atanmış literal değerine göre string metin olarak serileştirilir. Daha güçlü XML çıktısı istiyorsan türü daralt (String, int, somut bir sınıf) — dönüştürücü yapıyı otomatik olarak yakalar.
İhtiyacın olabilecek diğer araçlar
Dart'tan XML'e tek parça. Şunlar onunla iyi gider: