A small object that tells DPE what kind of file you're handing it and how to extract records from it. The engine reads the file, follows the schema, and returns mapped JSON records plus diagnostics.
The schema you build in this Studio is exactly what gets passed to DataParser.parse(file, schema) in production. The DPE schema output tab shows that object — copy it from there when you're done.
A parse runs through four stages, each visible as its own output tab:
dropRegex lines have been stripped. Identical to RAW if no dropRegex is set.mapping reshapes the fields. This is what shows up at result.raw.result.data). Identical to Pre-mapping if no mapping is defined.A fifth tab, DPE schema, shows the schema object that was just submitted to the engine — the artifact this session is producing. It refreshes on Parse, not as you edit the form.
No accounts, nothing stored. DPE parses your files entirely in your browser — nothing is uploaded and nothing is kept on a server. You save your work as files on your own disk and reload them here. Every example you load exercises these controls.
Download saves the schema as dpe-schema.json — the same object Copy produces. It's the portable engine schema: drop it into any DPE consumer, or re-upload it here later.dpe-schema.json and repopulates the whole form (including the mapping). Then load a data file and Parse.Download JSON saves the records losslessly (handles nested objects); Download CSV saves them as CSV.Round-trip: tune a schema → download it → next time, upload the schema, load the data file, Parse, download the results. Naming and file management are yours.
csv, prn, txt, fixed, xml, json, passthrough, xls, xlsx, ods, docx, odt.prn and txt. delimited = fields separated by a character (comma, pipe, tab). fixed = fields at known column positions.utf-8. Use windows-1252, iso-8859-1, cp437, etc. for legacy dumps.m flag. Any line matching any pattern is removed before the parser sees the file. Use it to strip page headers, dates, banner separators, decorative === lines. Applies to all text formats; ignored (with a warning) for spreadsheets / documents.output = input, one per line or comma-separated. Source may be a field name (sku), a dot path on nested objects (Material.Category), an XML attribute (@_id), a text node (Pricing.Buy.#text), or a 1-indexed positional integer (3). Missing values become null.replace (default) — output contains only the mapped target keys. extend — output contains all source fields with mapped target keys overlaid on top.result.errors.,, |, ;), \t for tab, or auto to let PapaParse autodetect.".{ name, start, end, trim? }. start inclusive, end exclusive, both 0-based. trim defaults true.Envelope.Body.Records.Record. Omit to use the root.No knobs. Output is [{ line, text }], one record per line, 1-indexed. Useful when you want to inspect (or positionally map) a text file DPE doesn't structurally parse — raw EDIFACT / X12 dumps, log files, anything line-oriented.
{
format: 'csv',
delimiter: '|',
dropRegex: ['^=', '^Generated:', '^-{3,}', '^END OF']
}
The dropRegex patterns strip banner separators, date stamps, dash lines, and trailing summaries. The parser only sees actual data rows.
{
format: 'passthrough',
mapping: { segment: 1, payload: 2 }
}
Each line of the EDI dump becomes a record { line, text }. The positional mapping renames those two fields by index (1 = line, 2 = text).
{
format: 'csv',
hasHeaders: false,
mapping: { sku: 1, name: 2, buy: 3, sell: 4 }
}
With hasHeaders: false, PapaParse returns each row as an array. Positional sources (1-indexed) map array slots to target names.
{
format: 'xml',
rootPath: 'Envelope.Body.Records.Record',
mapping: {
id: '@_id',
category: 'Material.Category',
buy: 'Pricing.Buy.#text'
}
}
rootPath drills into the parsed tree. The @_ prefix accesses XML attributes (fast-xml-parser convention). #text accesses the text node of an element that also has attributes.
Select the buyer's export file to tune a schema against.
Loads a sample file from samples/ and pre-fills the schema.
When off, loading an example leaves the Mapping field empty so you can see the raw parser output before any mapping is applied.
Reads a dpe-schema.json (downloaded from the schema tab) and repopulates the whole form. Then load a data file above and Parse.
No accounts, nothing stored. DPE parses your files entirely in your browser — we never receive or keep your data. That's why you save your work by downloading the schema (and results) and reload it by uploading, rather than storing it on our servers. Your files, your disk, your naming.
File type. Extension is ignored.
Delimited = separator-based. Fixed = column-based.
Default utf-8. Use windows-1252, iso-8859-1, cp437 for legacy dumps.
Lines matching any pattern are stripped before parsing. m-flag, line-anchored. Text formats only.
Syntax: output = input, one per line or comma-separated. Source may be a field name (with dot-path for nested), or a positive integer for positional access (1-indexed). Comments (#, //) supported.
Only applies when a mapping is defined above.
If on, any error rejects the parse instead of being collected in result.errors.
When on, the schema sent to the engine includes every option relevant to the chosen format, even when at its default value. Useful for self-documenting schemas.
Stage 1 — original file content as received, before any processing.
Parse a file to see output.
Stage 2 — text after dropRegex stripping.
Stage 3 — records as the format parser produced them, before mapping reshapes the fields.
Parse a file to see the schema.