SmartQueryTools

Convert Parquet to XML Online

Convert Parquet files to XML directly in your browser. Download a structured XML document with one element per row — no upload required.

About converting Parquet to XML

Parquet to XML bridges modern analytics output and older enterprise systems. ERP imports, government and banking submission portals, EDI middleware and many SOAP-era integrations only accept XML. When the data behind such a feed is produced by a Spark or warehouse job, it arrives as Parquet and needs to be turned into elements before it can be sent.

The output is a generic, flat document: an XML declaration, a <data> root, one <row> element per record and one child element per column. It is valid XML that any parser can read, but it will rarely match a partner's schema out of the box. Treat it as a starting point for an XSLT transform or a mapping step in your integration tool, which can rename elements and add the namespaces and attributes the XSD requires.

Element names must follow XML naming rules, so column names are cleaned. Any character other than a letter, digit or underscore becomes an underscore, and a name starting with a digit gets a leading underscore. A column called 2024 revenue becomes <_2024_revenue>. All values are text. Nothing in the file records that a column was a number or a timestamp.

Worked example

A small orders export with an ID, a customer name, a date, an amount (one missing) and a true/false flag, converted with the default settings.

Input (Parquet)

Parquet file (binary, columnar) — shown as a table with its schema

order_idcustomerorder_dateamountshipped
1001Acme Ltd2026-03-02249.5true
1002Brightside Co2026-03-021200false
1003Acme Ltd2026-03-0589.99true
1004Northwind2026-03-07NULLfalse

Schema: order_id BIGINT, customer VARCHAR, order_date DATE, amount DOUBLE, shipped BOOLEAN

Output (XML)

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <row>
    <order_id>1001</order_id>
    <customer>Acme Ltd</customer>
    <order_date>2026-03-02</order_date>
    <amount>249.5</amount>
    <shipped>true</shipped>
  </row>
  <row>
    <order_id>1002</order_id>
    <customer>Brightside Co</customer>
    <order_date>2026-03-02</order_date>
    <amount>1200</amount>
    <shipped>false</shipped>
  </row>
  <row>
    <order_id>1003</order_id>
    <customer>Acme Ltd</customer>
    <order_date>2026-03-05</order_date>
    <amount>89.99</amount>
    <shipped>true</shipped>
  </row>
  <row>
    <order_id>1004</order_id>
    <customer>Northwind</customer>
    <order_date>2026-03-07</order_date>
    <amount></amount>
    <shipped>false</shipped>
  </row>
</data>

What changes when you convert Parquet to XML

  • Each Parquet row becomes a <row> element inside <data>, with a child element per column in schema order.
  • Characters with meaning in XML (&, <, >, " and ') are escaped, so free text with ampersands or angle brackets stays well-formed.
  • Numbers, DECIMAL digits, booleans and timestamps are written as element text. Timestamps look like 2026-03-02 09:15:00, not xs:dateTime, which would need a T.
  • NULL becomes an empty element, <amount></amount> for order 1004. There is no xsi:nil attribute, so a reader cannot tell NULL from an empty string.
  • Struct, list and map columns are written as JSON text inside one element. Flatten nested fields into their own columns before converting if the receiver needs child elements.

Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.

Frequently Asked Questions

Can I change the <data> and <row> element names?

Not in the converter. Rename them afterwards with a find and replace on the opening and closing tags, or with a small XSLT that also adds the namespaces your target schema needs.

Will the XML validate against my partner's XSD?

Only if their schema happens to use a flat row and column layout with the same names. Most do not. Use the output as input to an XSLT or mapping tool that reshapes it to the required structure.

Why was my column 2024 revenue renamed to _2024_revenue?

XML element names cannot start with a digit or contain spaces. Leading digits get an underscore prefix and other invalid characters are replaced with underscores. Rename the column in the SQL Query tool first if you need a specific element name.

Related Tools