Sample XML
A well-formed XML catalogue with nested elements and attributes, for testing XML parsers and XPath queries.
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<product id="1">
<name>Widget</name>
<price currency="USD">9.99</price>
<tags><tag>tools</tag><tag>hardware</tag></tags>
</product>
<product id="2">
<name>Gadget</name>
<price currency="USD">19.99</price>
<tags><tag>electronics</tag></tags>
</product>
</catalog>
Specifications
- Elements
- catalog › product › name/price/tags
- Attributes
- true
- Declaration
- UTF-8
Testing contract
Expected to pass- Scenario
- Exercise Sample XML in its xml workflow. A well-formed XML catalogue with nested elements and attributes, for testing XML parsers and XPath queries.
- Expected result
- 13 text lines, decoded as UTF-8; first nonempty line is '<?xml version="1.0" encoding="UTF-8"?>'. Declared feature checks: elements=catalog › product › name/price/tags; attributes=True; declaration=UTF-8.
What is a .xml file?
XML (Extensible Markup Language) is a verbose, self-describing markup language using nested tags, attributes, and namespaces to represent structured, hierarchical data. It supports schemas, entities, and validation and underlies many document and data formats. It remains common in enterprise, publishing, and interchange contexts.
How to use this file
Use an example XML file to test parsers, namespace and schema validation, XPath queries, and protection against entity-expansion and external-entity attacks.
How to use this file for testing
“Sample XML” is a deterministic Testaroo fixture for Data import. Realistic faker-generated datasets with documented schemas for testing import and ETL flows.
Documented properties for this file: XML · 344 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
Data fixtures document their exact quirks (delimiters, encodings, null handling, schema, and row counts) in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.
Code examples
import xml.etree.ElementTree as ET
tree = ET.parse("sample.xml")
root = tree.getroot()
print(root.tag, [c.tag for c in root][:5])Generated by generation/data_structured.py. Free for any use, no attribution required, license.
Related files
- csv10,000-Row CSVA CSV with 10,000 data rows, for testing streaming parsers, memory handling, and import performance.

- csvAlder Books Reconciliation: Aged creditors summaryAged creditors summary for Alder Books Reconciliation. The 3 suppliers behind the 16 operating payments, grouped by expense category. The amounts due are 774.00, 617.00, 673.00 and they sum to 2064.00, which is the total of the three actual columns on the budget report.

- csvAlder Books Reconciliation: Aged debtors reportAged debtors report for Alder Books Reconciliation. 8 open receivables aged at 2026-09-08, each with 100.00 outstanding against an invoice of between 750.00 and 1275.00. The ageing buckets hold 0.00 current, 500.00 at 31 to 60 days and 300.00 at 61 to 90 days, summing to 800.00, the receivables line of the trial balance.

- csvAlder Books Reconciliation: Balanced manual journal batchBalanced manual journal batch for Alder Books Reconciliation. 3 month-end journals of 2 lines each, 6 lines in total: an accrual, a reclassification and a prepayment release. Each batch_id balances on its own and the batch as a whole posts 339.75 of debits and the same of credits.

- csvAlder Books Reconciliation: Bank reconciliationBank reconciliation for Alder Books Reconciliation. All 24 statement transactions matched one for one to a cash-account ledger line, with a difference column that is 0.00 on every row. There are no unpresented items and no deposits in transit, so the book balance 10236.00 equals the statement balance 10236.00 and the reconciling difference is 0.00.

- jsonAlder Books Reconciliation: Bank reconciliation JSONBank reconciliation JSON for Alder Books Reconciliation. The same 24 matches as bank-reconciliation.csv with the reconciliation summary at the top: statement closing 10236.00, book closing 10236.00, nothing outstanding or unpresented and a reconciling difference of 0.00.
