ModernCalcs

CSV to XML Converter

Convert CSV data to well-formed XML. Column headers become element tags. Customize root and row tag names. Special characters are automatically escaped.

CSV Input

XML Output

<?xml version="1.0" encoding="UTF-8"?>
<records>
  <record>
    <name>Alice</name>
    <age>30</age>
    <city>New York</city>
  </record>
  <record>
    <name>Bob</name>
    <age>25</age>
    <city>San Francisco</city>
  </record>
  <record>
    <name>Charlie</name>
    <age>35</age>
    <city>Austin</city>
  </record>
</records>

CSV to XML: Generate Well-Formed XML from Tabular Data

Many enterprise systems, SOAP APIs, and legacy integrations require XML data. This tool converts your CSV to well-formed XML — each row becomes an element, each column a child element — with configurable root and row tag names and automatic XML entity escaping.

Formula
<root> <row> <header1>value1</header1> <header2>value2</header2> </row> </root>

Tag names are sanitized: spaces and special characters become underscores. The five XML reserved characters (&, <, >, ', ") are escaped to entities.

Configurable Element Names

The root element (default: 'root') wraps the entire document. The row element (default: 'row') wraps each data row. When targeting a specific XML schema — like for HR systems or for catalog imports — set these names to match exactly.

Tag Name Sanitization

Column headers are used directly as XML tag names, but XML has strict naming rules. The converter replaces spaces and most special characters with underscores. Headers starting with a digit get an underscore prefix so they remain valid XML identifiers.

XML Entity Escaping

The five reserved XML characters in cell values — &, <, >, ', " — are replaced with named entities (&, <, >, ', "). This prevents malformed output even when cells contain code fragments, HTML snippets, or SQL strings.

Practical Examples

Generating a Product Catalog Feed

Convert a products.csv to an XML file for a legacy import endpoint.

  • 1.Paste the CSV with product columns (name, price, sku)
  • 2.Set root element to 'catalog', row element to 'product'
  • 3.Copy the XML output
  • 4.POST it to the endpoint or save as products.xml

What Gets Generated

  • Well-formed XML fragment with configurable element names
  • One child element per column value in each row
  • All five XML reserved characters entity-escaped
  • Safe even when cells contain code, HTML, or SQL

Good Use Cases

  • Generating XML feeds for legacy enterprise systems
  • Converting spreadsheet exports for SOAP API payloads
  • Producing XML data fixtures for unit and integration tests
  • Creating structured XML config files from CSV inputs

Frequently Asked Questions

How are column headers converted to XML tag names?

Spaces are replaced with underscores, and any character that is not alphanumeric, underscore, hyphen, colon, or period is replaced with an underscore to ensure valid XML tag names.

Are special characters escaped?

Yes. Ampersands (&), less-than (<), greater-than (>), and double quotes (") in cell values are escaped to their XML entities to produce valid XML.

Can I customize the tag names?

Yes — the root element tag (wrapping all rows) and the row element tag (each data row) are both configurable fields above the output.