Generator testowych danych XML
Generuj pliki XML z losowymi danymi testowymi: użytkownicy, produkty, zamówienia. Konfigurowalny schemat. Do testów API, SOAP i parsowania. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Element główny
Liczba pozycji
Linie
Rozmiar
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<!--Wygenerowano przez Generator XML Dummy-->
<!--Wygenerowano: 2026-10-20T14:53:52+00:00 UTC-->
<product id="1">
<sku>SKU-00001</sku>
<name>Przykładowy Name 1</name>
<price>11.24</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 1.</description>
<created_at>2026-10-20T13:53:52Z</created_at>
</product>
<product id="2">
<sku>SKU-00002</sku>
<name>Przykładowy Name 2</name>
<price>12.49</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 2.</description>
<created_at>2026-10-20T12:53:52Z</created_at>
</product>
<product id="3">
<sku>SKU-00003</sku>
<name>Przykładowy Name 3</name>
<price>13.74</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 3.</description>
<created_at>2026-10-20T11:53:52Z</created_at>
</product>
<product id="4">
<sku>SKU-00004</sku>
<name>Przykładowy Name 4</name>
<price>14.99</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 4.</description>
<created_at>2026-10-20T10:53:52Z</created_at>
</product>
<product id="5">
<sku>SKU-00005</sku>
<name>Przykładowy Name 5</name>
<price>16.24</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 5.</description>
<created_at>2026-10-20T09:53:52Z</created_at>
</product>
<product id="6">
<sku>SKU-00006</sku>
<name>Przykładowy Name 6</name>
<price>17.49</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 6.</description>
<created_at>2026-10-20T08:53:52Z</created_at>
</product>
<product id="7">
<sku>SKU-00007</sku>
<name>Przykładowy Name 7</name>
<price>18.74</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 7.</description>
<created_at>2026-10-20T07:53:52Z</created_at>
</product>
<product id="8">
<sku>SKU-00008</sku>
<name>Przykładowy Name 8</name>
<price>19.99</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 8.</description>
<created_at>2026-10-20T06:53:52Z</created_at>
</product>
<product id="9">
<sku>SKU-00009</sku>
<name>Przykładowy Name 9</name>
<price>21.24</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 9.</description>
<created_at>2026-10-20T05:53:52Z</created_at>
</product>
<product id="10">
<sku>SKU-00010</sku>
<name>Przykładowy Name 10</name>
<price>22.49</price>
<currency>USD</currency>
<description>To jest przykładowe pole description dla pozycji 10.</description>
<created_at>2026-10-20T04:53:52Z</created_at>
</product>
</catalog>
| Fraza w nazwie pola | Przykład nazwy | Wartość dla pozycji nr 1 |
|---|---|---|
| email (np. user_email, contact_email) | [email protected] | |
| phone / telefon | phone | +1-555-0101 |
| sku / code / kod | sku | SKU-00001 |
| price / amount / kwota | price | 11.24 |
| currency / waluta | currency | USD |
| date / time / created / updated | created_at | 2026-10-20T13:53:52Z |
| url / link / adres | url | https://example.com/item/1 |
| name / title / nazwa | name | Przykładowy Name 1 |
| desc / summary / opis | description | To jest przykładowe pole description dla pozycji 1. |
| wszystkie pozostałe pola | note | Wartość 1 |
Sprawdzanie działa w tej kolejności (najpierw email, na końcu ogólna wartość), więc nazwa created_at da datę ISO, mimo że zawiera też „at”. Nazwy pól są oczyszczane do znaków A-Z a-z 0-9 _ - ., a duplikaty usuwane.
- Deklaracja —
<?xml version="1.0" encoding="UTF-8"?>, zawsze UTF-8 (DOMDocument). - Element główny — z dwóch komentarzy: pochodzenie i czas wygenerowania (UTC).
- Pozycje — element powtarzany 1–500 razy; opcjonalny atrybut
id="1". - Pola — elementy potomne z Twojej listy (rozdzielanej przecinkami), tekst zwykły lub
CDATA. - Formatowanie — wcięcia przy włączonej opcji „Czytelne formatowanie”, inaczej jeden wiersz.
Warto wiedzieć — dane testowe XML
Do czego używać danych testowych
Podmiana integracji SOAP/XML-RPC zanim dostaniesz dostęp produkcyjny, fixture'y do testów parserów i importerów, szablony mapowań pól (np. wtyczek e-commerce), demonstracje dla klienta i dokumentacja API — wszędzie tam, gdzie potrzebny jest sensowny XML z realną strukturą, a nie „lorem ipsum” w tagach.
XML vs JSON w skrócie
XML ma atrybuty, przestrzenie nazw, komentarze i sekcje CDATA — jest gadatliwy i sprawdza się w integracjach korporacyjnych, fakturach elektronicznych (KSeF), sitemapach i RSS. JSON jest zwięzły i natywny dla JavaScriptu. Ten generator pokazuje oba światy: atrybuty id i CDATA przełączasz opcjami.
CDATA i bezpieczne znaki
Opcja CDATA opakowuje wartości w <![CDATA[ … ]]> — przydatna, gdy pole ma zawierać znaki < i > bez ucieczek. Nazwy elementów są filtrowane do bezpiecznego zestawu, więc nawet nietypowe nazwy pól nie rozbiją struktury dokumentu.
Prywatność i eksport
Wszystkie wartości są fikcyjne (domena example.com, numery z serii 555), więc nic nie wycieka. XML liczy się na żywo podczas pisania, a zapis do historii następuje wyłącznie po kliknięciu „Przetwórz”. Wynik skopiujesz lub pobierzesz jako plik .xml do importu w innym systemie.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator testowych danych XML – losowe dane do testowania
XML (eXtensible Markup Language) jest szeroko używany w integracji systemów, SOAP API, konfiguracjach i danych. Generator tworzy pliki XML z losowymi, realistycznymi danymi testowymi na podstawie wybranego schematu – przydatne do testów importu, parsowania i API.
Struktura XML
XML = hierarchiczny, tag-based format. Root element: jeden. Elementy:
XML Schema (XSD)
XSD (XML Schema Definition): definiuje strukturę i typy XML. Typy: xs:string, xs:integer, xs:date, xs:boolean. Walidacja: narzędzia sprawdzają XML pod XSD. DTD (Document Type Definition): starszy, mniej powerful. RelaxNG: alternatywa. Generator może tworzyć XML zgodny z prostymi schematami.
Popularne przypadki użycia XML
SOAP Web Services: starszy standard API. RSS/Atom feeds: subskrypcje. Android resources: strings.xml, layouts XML. Java Spring: konfiguracja application context XML. Microsoft Office: .docx = ZIP z XML wewnątrz. SVG: format grafiki wektorowej (XML based). KML: Keyhole Markup Language (Google Earth). XLIFF: lokalizacje tłumaczeń.
XML vs JSON
XML: bardziej verbose, obsługuje atrybuty, CDATA, komentarze, namespace. JSON: prostszy, mniejszy rozmiar, natywny JS. Kiedy XML: SOAP API, legacy systems, dokument-oriented (Word, SVG). JSON: REST API, NoSQL, konfiguracja (zastępuje XML w nowych projektach). YAML: jeszcze prostszy niż JSON dla konfiguracji.
Jak działa generator testowych danych XML
Generator nie kopiuje gotowego pliku, tylko buduje drzewo elementów na podstawie schematu. Schemat — XSD, DTD, RelaxNG albo ręcznie opisana lista pól — jest tłumaczony na strukturę: każdy element dostaje typ, liczność oraz relację do rodzica. Najpierw powstaje szkielet dokumentu, a dopiero na końcu wypełniane są wartości. Dzięki temu wygenerowany plik ma zawsze taki sam układ niezależnie od tego, jakie dane wylosuje generator.
O kształcie danych decyduje mapowanie typów. Pole typu xs:string zamienia się na losowy tekst: nazwę, kod, opis. xs:integer daje liczbę całkowitą z zadanego przedziału, xs:date datę, a xs:boolean wartość logiczną. Atrybuty są generowane razem z elementem, do którego należą, natomiast przestrzeń nazw z xmlns jest przepisywana na wszystkie elementy w jej zasięgu, żeby prefiksy nie rozjechały się w trakcie edycji pliku.
Kluczowym elementem mechanizmu jest ziarno losowości. Ten sam schemat i to samo ziarno dają identyczny plik przy każdym uruchomieniu, co pozwala powtarzać test regresyjny na niezmienionym zestawie danych i odróżnić błąd aplikacji od zmiany danych wejściowych. Generator pilnuje także składni: escapuje znaki &, < i > w treści, opakowuje w sekcję CDATA fragmenty, które mają pozostać dosłowne, dodaje deklarację XML i kontroluje, by dokument miał dokładnie jeden element główny.
Przykład: plik XML do testu importu zamówień
Scenariusz: potrzebujesz dokumentu XML, na którym sprawdzisz importer zamówień w systemie ERP.
- Opisz schemat. Element główny zamowienie, w nim naglowek z atrybutami id i waluta (oba typu xs:string) oraz powtarzalny element pozycja.
- Ustaw pola pozycji. nazwa jako xs:string, ilosc jako xs:integer, data_dostawy jako xs:date, dostepny jako xs:boolean.
- Określ liczność. Podaj minimalną i maksymalną liczbę wystąpień elementu pozycja — generator wylosuje liczbę powtórzeń z tego przedziału.
- Ustaw ziarno i wygeneruj plik. Zapisz ziarno razem ze schematem, żeby móc odtworzyć dokładnie te same dane w kolejnym przebiegu testu.
- Sprawdź składnię. Upewnij się, że tagi są domknięte, element główny jest tylko jeden, a znaki specjalne w nazwach zostały escapowane.
- Użyj w teście. Podmień plik wejściowy importera albo wyślij go jako treść żądania SOAP i sprawdź, czy walidacja względem XSD przechodzi bez błędów.
Typy i konstrukcje XML a dane wyjściowe
| Typ lub konstrukcja | Co trafia do pliku | Zastosowanie w testach |
|---|---|---|
| xs:string | losowy tekst: nazwy, kody, opisy | testy długości, kodowania i znaków diakrytycznych |
| xs:integer | liczba całkowita bez separatora i bez cudzysłowu | testy zakresów, rzutowania typów i dzielenia |
| xs:date | data w zapisie ISO | testy formatów dat, stref czasowych i sortowania |
| xs:boolean | wartość true albo false | testy gałęzi logicznych i wartości domyślnych |
| atrybut | wartość w cudzysłowie wewnątrz tagu otwierającego | testy identyfikatorów, metadanych i atrybutów wymaganych |
| CDATA | <![CDATA[treść]]> | testy treści, która nie może być parsowana jako znacznik |
| namespace | atrybut xmlns z adresem URI | testy dokumentów z kilkoma przestrzeniami nazw |
| komentarz | <!-- treść --> | sprawdzenie, czy parser pomija komentarze i czy nie gubi danych |
Jak wykorzystać generator w praktyce
- Trzymaj schemat w repozytorium. Plik XSD razem z ziarnem to kompletny opis danych testowych — po zmianie modelu od razu widać, które testy przestały być zgodne.
- Testuj dane brzegowe, nie tylko losowe. Po wygenerowaniu pliku podmień wybrane pola na wartości skrajne dla danego typu: puste pole tekstowe, datę na granicy zakresu, liczbę ujemną tam, gdzie model tego nie przewiduje.
- Generuj osobne warianty przypadków. Osobny plik dla danych poprawnych, osobny dla niepoprawnych i osobny dla pustego zbioru pozycji pozwala pokryć testy negatywne importera bez ręcznego pisania dokumentów.
- Kontroluj rozmiar pliku. Duża liczność powtarzalnych elementów szybko zwiększa rozmiar dokumentu i wydłuża walidację — do testów wydajności przygotuj większy zestaw, a do testów jednostkowych mniejszy.
- Nie wysyłaj danych z generatora na produkcję. To dane syntetyczne; przed użyciem ich w systemie zewnętrznym sprawdź, czy nie trafią do logów, kolejek zdarzeń ani do raportów.
Ograniczenia generatora
- Schematy złożone wymagają ręcznej korekty. Grupy modelu, dziedziczenie typów, klucze i odwołania keyref mogą nie zostać odwzorowane w pełni, więc plik trzeba czasem poprawić przed walidacją.
- Reguły biznesowe są nieznane. Generator nie sprawdzi, czy data dostawy jest późniejsza niż data zamówienia ani czy suma pozycji zgadza się z nagłówkiem dokumentu.
- Zależności między polami są losowe. Wartości generowane niezależnie mogą tworzyć kombinacje nierealistyczne, na przykład kod kraju niepasujący do waluty rozliczeniowej.
- Walidacja leży po Twojej stronie. Narzędzie tworzy dokument dobrze sformułowany, ale zgodność ze schematem należy potwierdzić zewnętrznym walidatorem.
Najczęstsze pytania
Jak parsować XML w Python?
import xml.etree.ElementTree as ET. tree = ET.parse("plik.xml"). root = tree.getroot(). for child in root: print(child.tag, child.attrib). Xpath: root.findall(".//element"). lxml: szybsza biblioteka, pełne XPath 2.0. BeautifulSoup: soup.find("tag"). minidom: DOM API.
Jak parsować XML w JavaScript?
Przeglądarka: const parser = new DOMParser(); const doc = parser.parseFromString(xmlStr, "text/xml"). doc.getElementsByTagName("tag"). Node.js: xml2js (npm) lub fast-xml-parser. xml2js: parseString(xml, (err, result) => { console.log(result) }). Konwersja XML→JSON: xml2js lub xmlToJSON biblioteki.
Jak walidować XML pod XSD?
Python: from lxml import etree; schema = etree.XMLSchema(schema_doc); schema.validate(doc). Java: SchemaFactory.newInstance → Schema → Validator. C#: XmlReader z XmlReaderSettings. Online: freeformatter.com/xml-validator-xsd.html. Xmllint (Linux): xmllint --schema schema.xsd plik.xml.
Co to jest SOAP API i jak testować?
SOAP (Simple Object Access Protocol): XML-based web service protocol. WSDL: opis usługi (Web Service Description Language). Envelope:
Jak generować duże pliki XML dla stress testów?
Python: for i in range(1000000): ET.SubElement(root, "item").text = str(i). Streaming: ElementTree incremental writer. SAX parser: parsowanie strumieniowe bez ładowania do pamięci. 1M elementów XML ≈ kilkaset MB. Dla bardzo dużych: chunk by chunk generation. Narzędzie: generuj N rekordów (slider 10-10000).
Czy wygenerowany plik XML przejdzie walidację XSD?
Przy prostym schemacie zwykle tak. Przy schematach z odwołaniami, kluczami i grupami modelu wynik trzeba sprawdzić walidatorem i w razie potrzeby poprawić plik ręcznie.
Jak uzyskać powtarzalne dane testowe XML?
Ustaw stałe ziarno losowości i nie zmieniaj schematu między przebiegami. Ten sam zestaw wejściowy daje wtedy identyczny plik, co jest niezbędne w testach regresyjnych.
Czy taki XML nadaje się do testów SOAP API?
Tak, pod warunkiem że zachowasz wymagane przestrzenie nazw i kopertę komunikatu. Najprościej wygenerować samą treść, a następnie osadzić ją w kopercie po stronie klienta.
Co zrobić ze znakami specjalnymi w danych testowych?
Znaki &, < i > muszą być escapowane albo umieszczone w sekcji CDATA. Generator robi to automatycznie, ale po ręcznej edycji pliku łatwo tę zasadę złamać.
Czy dane z generatora są anonimowe?
Są syntetyczne, więc nie odpowiadają realnym osobom ani dokumentom. Mimo to nie należy wysyłać ich do systemów produkcyjnych ani traktować jako danych referencyjnych.
Powiązane narzedzia: formatowanie XML, generator JSON testowy i walidator XML.