Soldaki alana Java yapıştırın ve "Convert"'a tıklayın — XML'e çeviriyoruzJava kodunu yapıştırın

Bu araç ne yapıyor

Bir SOAP istemcisi, Spring config'i, eski bir banking entegrasyonu veya JUnit fixture'ı için bir Java class'ına uyan bir XML payload'ını elle oluşturmak zorunda kaldıysanız, ne kadar sıkıcı olduğunu bilirsiniz. Java'yı buraya yapıştırın, tek seferde düzgün biçimlendirilmiş XML geri alın. Tek bir POJO, Lombok anotasyonlu DTO'larla dolu bir dosya veya birkaç class'tan oluşan derin iç içe bir model — sonuç aynı: her alanı korunmuş eksiksiz bir XML dokümanı.

Gözü kapalı templating değil. Araç, Java'nın XML'e nasıl serileştirildiğini biliyor: BigDecimal kesin hassasiyetini korur (bilimsel notasyon yok), LocalDate ve LocalDateTime ISO-8601 olarak çıkar, UUID standart 8-4-4-4-12 hex string'ine dönüşür, Instant Z ekli bir timestamp olur ve null değerli boxed primitive'ler boş elementlere dönüşür. List<T> bir container element olur — varsayılan olarak wrap'lenmiş, her item için bir child ile — tıpkı Jakarta XML Binding (JAXB)'in üreteceği gibi.

Anotasyonlar Eclipse JAXB RI'nin ele aldığı şekilde aynen uygulanır. @XmlRootElement(name="...") root'u yeniden adlandırır, @XmlElement(name="...") bir child'ı yeniden adlandırır, @XmlAttribute alanı parent üzerinde bir attribute olarak yayınlar, @XmlTransient onu tamamen çıkarır ve @XmlElementWrapper bir collection'ın etrafına dış container ekler. Lombok @Data da çalışır — üretilen getter ve setter'lar bean property olarak ele alınır. Jackson XML modülünü tercih ediyorsanız, @JacksonXmlProperty ve @JacksonXmlElementWrapper de aynı şekilde dikkate alınır. İç içe class'lar, miras alınan alanlar ve birden fazla top-level class — hepsi temiz çıkar.

Nasıl kullanılır

Üç adım. Tek bir POJO yapıştırsanız da bir düzine class'lık bir dosya yapıştırsanız da aynı şekilde çalışır.

1

Java'nızı yapıştırın (veya örneği deneyin)

Java'nızı soldaki editöre olduğu gibi bırakın. Sade bir POJO, @Data Lombok class'ı, JAXB anotasyonlu DTO veya birden fazla class içeren bir dosya — hepsi çalışır. Önce gerçekçi bir örnek görmek için Load Sample'a basın.

Import'ları çıkarmanıza, anotasyonları kaldırmanıza veya dosyayı temizlemenize gerek yok. IDE'nizde durduğu gibi yapıştırın — yorumlar, package bildirimi, hepsi dahil.

2

Convert'a basın

Yeşil Convert butonuna tıklayın. Araç Java'yı okur, her alanı ve class'ı korur, anotasyonlara uyar ve XML'i tek seferde oluşturur. Çalışırken kısa bir loading göstergesi görürsünüz.

3

XML'i kopyalayın

Sağdaki panel, standartlara uygun herhangi bir XML parser'ın kabul edeceği girintili, düzgün biçimlendirilmiş XML ile dolar. SOAP envelope'unuza, Spring Boot config'inize, entegrasyon testinize veya XSD tabanlı bir şema örneğine kopyalayın.

Bu gerçekten nerede işe yarıyor

SOAP fixture'ları oluşturma

JAX-WS veya Apache CXF request DTO'nuz var ve SoapUI veya Postman için bir XML body lazım. Class'ı yapıştırın, envelope'a hazır XML'i alın, gününüze kaldığınız yerden devam edin.

Spring Boot XML config'leri

30 alana sahip bir Spring @ConfigurationProperties class'ı, düzenlemeye hazır bir XML template'ine dönüşür — applicationContext.xml boilerplate'ini elle yazmaya gerek yok.

Doküman ve kodu hizalı tutma

README, iç wiki veya XSD tabanlı şema dokümanları için XML örneklerini doğrudan gerçek entity class'larınızdan üretin; böylece örnekler kodla hiçbir zaman çelişmez.

Eski entegrasyon testlerini seed'leme

JUnit object-mother'larınızı mock sunucular, IBM MQ fixture'ları veya hâlâ XML konuşan eski enterprise sistemler için XML seed dosyalarına çevirin.

Sık sorulan sorular

Aynı anda birden fazla class yapıştırabilir miyim?

Evet — bir dosyanın tamamını yapıştırın. Her top-level class, iç içe tipleri genişletilmiş ve superclass'lardan miras alınan alanlar dahil edilmiş halde çıkar. Root'un referans almadığı class'lar ayrı XML fragment'ları olarak yayınlanır, böylece sessizce hiçbir şey atlanmaz.

@XmlRootElement, @XmlElement, @XmlAttribute ve @XmlTransient gibi JAXB anotasyonlarına uyuyor mu?

Evet. @XmlRootElement(name="x") root'u, @XmlElement(name="x") bir child'ı yeniden adlandırır, @XmlAttribute(name="x") alanı parent üzerinde attribute olarak yayınlar, @XmlTransient onu çıkarır ve @XmlElementWrapper bir collection'ın etrafına dış container ekler. Bu, JAXB tutorial'ında anlatılan davranışla örtüşür.

Peki Lombok ve Jackson XML?

Lombok @Data, @Getter ve @Setter, accessor'lar elle yazılmış gibi ele alınır. Jackson XML anotasyonları — @JacksonXmlProperty, @JacksonXmlRootElement, @JacksonXmlElementWrapper, @JacksonXmlText — da dikkate alınır, bu yüzden Jackson dataformats-text XmlMapper için yazılmış class'lar doğru çıkar.

BigDecimal, LocalDate, UUID ve null alanları nasıl işliyor?

BigDecimal tüm hassasiyetini korur, bilimsel notasyon yok. LocalDate, LocalDateTime ve ZonedDateTime ISO-8601 string'leri olarak çıkar. Instant Z eki alır. UUID standart 8-4-4-4-12 küçük harfli hex'tir. Optional.empty() ve null'lu boxed primitive'ler atılmak yerine boş elementlere dönüşür, böylece XML'in şekli instance'lar arasında tutarlı kalır.

Kodum saklanıyor mu?

Kod dönüştürülmek üzere backend'e gönderiliyor ve saklanmıyor — payload'ı log'lamıyoruz. Her online araçta olduğu gibi: kod gerçekten hassassa, yapıştırmadan önce bir göz atın.

Ya class'ta alışılmadık bir şey varsa — Stream'ler, CompletableFuture veya transient bir alan?

transient işaretli veya @XmlTransient / @JsonIgnore anotasyonlu alanlar atlanır. XML dünyasında doğrudan bir karşılığı olmayan tipler (Stream'ler, CompletableFuture, özel functional interface'ler) tüm dönüşümü patlatmak yerine boş elementler olarak çıkar. Java'nın kendisinde bir compile hatası varsa, önce bariz olanları düzeltin — parser hoşgörülüdür ama tam bir javac değildir.

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

Java'dan XML'e yapbozun bir parçası. Yanına iyi giden araçlar: