Soldaki alana C# yapıştırın ve "Dönüştür"'e tıklayın — biz XML'e çeviriyoruzC# kodu yapıştırın

Bu araç ne yapıyor

Bir C# sınıfını yansıtan bir XML payload’ını — bir SOAP çağrısı, bir config dosyası, bir WCF kontratı veya bir test fixture’ı için — elle hazırlamak zorunda kaldıysanız ne kadar boilerplate olduğunu bilirsiniz. C#’ı buraya yapıştırın, tek seferde düzgün biçimlendirilmiş XML alın. Tekil bir object initializer, birden çok sınıf içeren tam bir model dosyası veya derinlemesine iç içe bir şey — hepsinde aynı sonuç: her property’si korunmuş eksiksiz bir XML dokümanı.

Bu sadece aptal bir string replace değil. Dönüştürücü, C#’ın XML’e aslında nasıl serialize olduğunu bilir: 49.99m gibi decimal ekleri m’yi bırakır, DateTime ve DateTimeOffset ISO-8601 string’i olarak çıkar, Guid standart 8-4-4-4-12 hex string’e dönüşür, null değerli nullable’lar boş eleman olur ve koleksiyonlar XmlSerializer’ın üreteceği biçimle aynı şekilde gelir — her List<T>, eleman tipinin adını taşıyan item başına bir alt öğesi olan bir container elemana dönüşür.

Serialization attribute’larına da uyulur. [XmlRoot("x")] kök elemanı yeniden adlandırır, [XmlElement("x")] bir alt elemanı yeniden adlandırır, [XmlAttribute("x")] property’yi eleman yerine attribute olarak yayar ve [XmlIgnore] onu atlar. DataContract sınıflarındaki [DataMember(Name="x")] aynı şekilde çalışır. Birden fazla sınıfı yapıştırırsanız, her biri iç içe tipleri açılmış ve kalıtımla gelen property’leri dahil edilmiş olarak çıktıya gelir. Hiçbir şey sessizce yok olmaz.

Nasıl kullanılır

Üç adım. İster beş satır yapıştırın ister koca bir model dosyası — aynı şekilde çalışır.

1

C#’ınızı yapıştırın (veya örneği deneyin)

C# kodunuzu olduğu gibi soldaki editöre bırakın. Bir object initializer, tam bir sınıf tanımı, birden fazla sınıf veya iç içe tipler — hepsi olur. Önce gerçekçi bir örnek görmek isterseniz Örnek Yükle’ye tıklayın.

Yorumları ayıklamanıza, attribute’ları kaldırmanıza veya C# sözdizimini temizlemenize gerek yok. Kodu IDE’nizde gördüğünüz şekilde bırakın. Sadece yapıştırın.

2

Dönüştür’e basın

Yeşil Dönüştür butonuna tıklayın. Araç C#’ı okur, her sınıfı ve property’yi korur ve XML’i tek seferde kurar. Çalışırken kısa bir yükleme göstergesi görürsünüz.

3

XML’i kopyalayın

Sağ panel, girintili ve düzgün biçimlendirilmiş XML’le dolar — standartlara uyan herhangi bir XML parser’ı kabul eder. Doğrudan SOAP isteğinize, config dosyanıza, test fixture’ınıza veya dokümantasyonunuza kopyalayabilirsiniz.

Gerçekten ne zaman işe yarıyor

SOAP / WCF fixture’ları hazırlamak

Elinizde bir C# request kontratı var ve SoapUI ya da Postman’a atacak XML body’e ihtiyacınız var. Sınıfı yapıştırın, XML’i alın, devam edin.

Config dosyalarına başlamak

40 property’li bir Settings sınıfı, app.config, web.config veya XML tabanlı herhangi bir config store için düzenlemeye hazır bir XML şablonuna dönüşür — elle yazılmış boilerplate yok.

Dokümantasyonu senkron tutmak

README, API reference veya XSD tabanlı şema dokümantasyonu için XML örneklerini doğrudan gerçek modellerinizden üretin; böylece dokümanlar kodla birebir uyuşsun.

Test verisi seed’lemek

Unit testlerinizdeki object initializer’ları entegrasyon testleri, mock sunucular veya hâlâ XML konuşan legacy sistemler için XML seed dosyalarına çevirin.

Sık sorulan sorular

Birden fazla sınıfı aynı anda yapıştırabilir miyim?

Evet — koca bir dosya yapıştırabilirsiniz. Her top-level sınıf, iç içe tipleri açılmış ve base sınıftan gelen kalıtımsal property’leri dahil edilmiş olarak çıkar. Hiçbir şey atlanmaz.

[XmlElement], [XmlAttribute] ve [XmlIgnore] gibi attribute’lara uyuyor mu?

Evet. [XmlRoot("x")] kök elemanı yeniden adlandırır, [XmlElement("x")] bir alt elemanı, [XmlAttribute("x")] property’yi parent’ın attribute’u olarak yayar ve [XmlIgnore] onu tamamen çıkarır. DataContract sınıflarındaki [DataMember(Name="x")] de elemanı yeniden adlandırır. Bu, XmlSerializer’ın yapacağıyla aynıdır.

decimal, DateTime, Guid ve nullable’ları nasıl ele alıyor?

decimal’lar (49.99m) son ekini bırakır ve düz sayı metnine dönüşür. DateTime ve DateTimeOffset ISO-8601 string’i olarak çıkar. Guid standart 8-4-4-4-12 hex string’tir. TimeSpan bir ISO-8601 süresi ya da HH:mm:ss olur. null değerli nullable’lar atılmak yerine boş eleman olur — böylece yapı tutarlı kalır.

Peki iç içe sınıflar, list’ler ve dictionary’ler?

List<T>, array, HashSet<T> ve IEnumerable<T> hepsi, eleman tipinin adını taşıyan item başına bir alt öğeli container eleman olur — bir List<OrderItem> Items, <Items><OrderItem/><OrderItem/></Items> olur. Dictionary<K,V>, <Entry><Key/><Value/></Entry> container’ına dönüşür. İç içe object initializer’lar her alanı bozulmadan iç içe eleman olarak açılır.

Kodum saklanıyor mu?

Kodunuz dönüşüm için backend’e gönderilir ve saklanmaz — payload’ı loglamıyoruz. Online araçlarda her zaman olduğu gibi, kod gerçekten hassassa yapıştırmadan önce bir göz atın.

Ya C# içinde sıra dışı bir şey varsa — method’lar, delegate’ler, IntPtr?

Bunlar tüm dönüşümü hataya düşürmek yerine boş eleman olarak yayılır, böylece modelinizin geri kalanı yine de geçer. Kodun kendisinde sözdizimi hataları varsa, önce bariz olanları düzeltin — parser hoşgörülü ama sihirbaz değil.

İhtiyacınız olabilecek diğer araçlar

C#’tan XML’e yapbozun bir parçası. İyi eşleşen diğer araçlar: