Konwerter Dart do XML
Wklej klasy lub obiekty Dart. Odbierz czysty XML.
Co robi to narzędzie
Jeśli kiedyś musiałeś ulepić payload XML tak, żeby pasował do modelu Dart — dla aplikacji Flutter gadającej z leciwym endpointem SOAP, konfiguracji XML w stylu Androida albo czytnika RSS — wiesz, ile to boilerplate’u. Wklej tu Dart, a narzędzie odda ci dobrze sformowany XML w jednym przebiegu. Jedna klasa z polami final, cały plik z modelami albo gotowa instancja — efekt ten sam: kompletny dokument XML z zachowanym każdym polem.
To nie jest naiwne podmienianie stringów. Konwerter czyta prawdziwy Dart: nazwane parametry required stają się elementami w kolejności deklaracji, pola final zachowują się identycznie jak nie-final, wartości DateTime renderują się jako stringi ISO-8601, Duration używa formatu czasu trwania ISO-8601, num, int i double trzymają swój kształt liczbowy, null (z typów nullable, np. String?) staje się pustym elementem zamiast znikać, a List<T> zamienia się w element kontener z jednym dzieckiem na pozycję — dokładnie to, co wypluł by XmlBuilder z pakietu xml.
Struktura klas jest zachowana. Każda klasa najwyższego poziomu zostaje elementem głównym nazwanym jak ta klasa, każde pole staje się elementem dzieckiem, klasy zagnieżdżone rozwijają się inline, a Map<K, V> zamienia się w pary <entry><key/><value/></entry>. Adnotacje typu @JsonKey(name: "x") z json_annotation są honorowane jako wskazówki do zmiany nazwy elementu. Wklej model Flutter, klasę danych w stylu freezed albo zwykły Dartowy POJO — XML wygląda tak, jakby napisał go ręcznie XmlBuilder, tylko bez całej ceremonii.
Jak tego używać
Trzy kroki. Ten sam przepływ, czy wklejasz jeden model, czy cały katalog <code>lib/models</code>.
Wklej swój Dart (albo spróbuj przykładu)
Rzuć swój Dart w lewy edytor tak, jak stoi. Zwykła klasa, data class z nazwanym konstruktorem, kilka klas albo wypełniona instancja — wszystko przejdzie. Kliknij Wczytaj przykład, żeby najpierw zobaczyć realistyczny przykład z Order.
Nie musisz usuwać importów, kasować dyrektyw part ani zdejmować adnotacji. Zostaw kod w takiej formie, w jakiej widzisz go w IDE. Wystarczy wkleić.
Wciśnij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie czyta Dart, zachowuje każdą klasę i pole, a XML buduje w jednym przebiegu. Podczas pracy pokazuje się krótki wskaźnik ładowania.
Skopiuj XML
Prawy panel wypełnia się wciętym, dobrze sformowanym XML-em, który przyjmie każdy parser zgodny ze standardem. Wrzuć go do żądania SOAP, pliku zasobów Fluttera, konfiguracji w stylu Androida albo fixture’a do testu jednostkowego.
Kiedy naprawdę się przydaje
Aplikacje Flutter gadające z usługami SOAP
Twoja aplikacja Flutter musi wywołać leciwy endpoint SOAP, a ciało żądania musi pasować do modelu Dart. Wklej model, weź XML, podaj go do <code>http.post</code> albo pakietu <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>.
Generatory kanałów RSS i Atom
Budujesz aplikację podcastową lub z newsami, która publikuje RSS? Wklej model odcinka, weź wymagany kształt XML, a potem owiń go kopertą kanału — bez ręcznego liczenia dzieci <code><item></code>.
Natywne konfiguracje XML Android/iOS
Musisz wygenerować XML preferencji w stylu Androida albo strukturę plist-podobną dla iOS z modelu Dart używanego w platform channels? Wklej klasę i dostań szablon gotowy do dopięcia.
Fixture’y testowe dla flutter_test
Zamień wypełniony model w plik fixture XML dla <code>flutter_test</code>, testów golden widgetów albo zamockowanych odpowiedzi HTTP — to dużo szybsza ścieżka niż ręczne klepanie stringów fixture.
Częste pytania
Mogę wkleić kilka klas naraz?
Tak — wklej cały models.dart albo cały katalog z modelami. Każda klasa najwyższego poziomu wychodzi z rozwiniętymi klasami zagnieżdżonymi i wciągniętymi polami z klas rodziców. Miksy traktowane są jako wnoszące swoje pola. Nic nie znika po cichu.
Działa z klasami freezed lub json_serializable?
Tak. Niezmienne klasy w stylu freezed i modele z adnotacją json_serializable są traktowane jak zwykłe klasy Dart — pola idą dalej, @JsonKey(name: "x") honorujemy jako wskazówkę do zmiany nazwy elementu. Nie musisz wcześniej uruchamiać build_runner ani wklejać wygenerowanego pliku .g.dart.
Jak obsługiwane są DateTime, Duration, null i num?
DateTime renderuje się jako string ISO-8601 (2026-04-21T10:15:00.000Z). Duration jako czas trwania ISO-8601 (PT2H30M) albo z fallbackiem HH:mm:ss. Typy nullable z wartością null stają się pustymi elementami (<field/>) zamiast być pomijane, żeby kształt XML pozostał spójny. num, int i double są serializowane jako zwykły tekst dziesiętny.
A co z List, Map i klasami zagnieżdżonymi?
List<T> staje się elementem kontenerem z jednym dzieckiem na pozycję, nazwanym od typu — List<OrderItem> items zamienia się w <items><OrderItem/><OrderItem/></items>. Map<K, V> zamienia się w pary <entry><key/><value/></entry>. Klasy zagnieżdżone rozwijają się inline, tak samo jak XmlBuilder z pakietu xml tworzy elementy zagnieżdżone.
Czy mój kod jest zapisywany?
Twój Dart trafia do backendu na potrzeby konwersji i nie jest przechowywany — nie logujemy payloadu. Jak zawsze z narzędziami online: jeśli w kodzie są naprawdę wrażliwe literały (klucze API, tokeny), wyczyść je albo zastąp mockami przed wklejeniem.
A jeśli klasa używa pól dynamic albo Object??
Pola typowane jako dynamic lub Object? są serializowane jako tekst oparty na przypisanej wartości literalnej, bo prawdziwy kształt znamy dopiero w runtime. Jeśli chcesz mocniejszego XML-a, zawęź typ (String, int, konkretna klasa) — konwerter sam podchwyci strukturę.
Inne narzędzia, które mogą ci się przydać
Dart na XML to tylko kawałek układanki. Te dobrze z tym pasują: