What root and row element names does the converter use?
The output wraps the entire document in a <records> root and uses <record> for each row. These names are deliberately generic so the XML is valid against most consumers; once converted you can find-and-replace the root or rename <record> to a domain-specific tag like <product> or <order>.
How are CSV headers turned into XML?
Each header becomes the tag name of a child element inside <record>, with the cell value as the text content. So "name" in the header row produces <name>Ada</name> in every record. The converter sanitises header names that are not valid XML tags (e.g. "first name" with a space becomes first_name).
Does the output escape special characters like &, <, >, " correctly?
Yes. Cell values containing &, <, >, ", or ' are replaced with &, <, >, ", and ' before being written into the XML. This guarantees the output is well-formed and parseable by any XML library.
Can I make a header an XML attribute instead of a child element?
This converter emits children only — the most portable choice for attribute-agnostic consumers like XSLT and XML databases. To convert a child to an attribute (e.g. <record id="1">), run a quick search-and-replace on the output, or use an XSLT transform if you have one in your pipeline.
What XML declaration is included?
The output starts with <?xml version="1.0" encoding="UTF-8"?> on the first line. UTF-8 is the universal default and matches what most modern parsers, EDI gateways, and SOAP services expect.
Will the XML validate against an XSD schema?
Schema validation is separate from well-formedness. This tool produces well-formed XML — it parses cleanly. To validate against an XSD (e.g. an EDIFACT, HR-XML, or industry standard schema), pipe the output through xmllint --schema or an XML-aware editor like Oxygen.
Is my CSV uploaded to your server?
No. Conversion runs in JavaScript inside your browser. Customer records, order data, and PII never leave the device. Open DevTools → Network and verify zero requests are sent when you click Convert.
How do I rename the root element to something domain-specific?
After converting, replace the two occurrences of <records> with your preferred root tag (e.g. <orders> and </orders>) and replace <record> with <order>. A 4-keystroke find-and-replace covers it.