A Fidelity-First MISMO 3.x Engine — v0.3.0

Parse, transform & generate MISMO mortgage XML — without losing a single cent

MISMO.js is a zero-dependency JavaScript engine that turns MISMO 3.x mortgage XML into clean, predictable JSON — and back again — with exact money, rate, and identifier fidelity. Browser-first, Node-ready.

quickstart.html
<!-- zero build step. window.MismoJS is ready. -->
<script src="https://cdn.jsdelivr.net/gh/Spuds0588/MISMO.js@main/dist/mismo.iife.js"></script>
<script>
  const engine = new MismoJS.MismoEngine();
  const json   = engine.parse(xmlText);   // XML → clean JSON (exact strings)
  const back   = engine.compose(json);    // JSON → well-formed XML
</script>
100%leaf-value fidelity
20real files verified
0runtime dependencies
39predictable arrays
I · The Problem

Are you still fighting raw MISMO XML?

MISMO 3.x is a huge, deeply nested, attribute-heavy XML standard. Generic parsers quietly destroy the data that matters most.

Pain — what generic parsers do

  • Money silently mangled: 240000.00 → 240000, 9.0000 → 9 — a single truncated amount is a compliance breach.
  • Padded identifiers destroyed: 000123 becomes 123, breaking loan and MERS references.
  • The classic XML-to-JSON trap: DEAL_SET is an object today, an array tomorrow — DEAL_SET[0] crashes in production.
  • Re-exporting is impossible: duplicate <?xml> declarations, lost attributes, entity-escaping drift.
  • Hand-rolled traversal code for every new file shape. Forever.

Desire — what you actually want

  • Every amount, rate, and ID preserved exactly as written — verified, not assumed.
  • Predictable arrays for every known MISMO collection container, out of the box.
  • Attributes, namespaces, and XLink relationships intact and queryable.
  • Lossless round-trip: parse → edit → compose → well-formed, valid XML.
  • One tiny script tag in the browser, zero build step, zero dependencies.
II · The Solution, in Practice

Introducing MISMO.js — and it runs right here

This is not a screenshot. It is the real engine, loaded from a plain <script> tag, running live in your browser. Upload a MISMO XML file and watch it parse — then re-export it and check the fidelity counter.

📄

Click to choose or drag a MISMO .xml file here

Waiting for a file…
—source size
—parse time
—leaf values
—preserved
Inspect the parsed JSON (engine.parse output)
// The full parsed MISMO payload will appear here.
III · Method

Simple steps to success

Three methods. No config, no schema download, no build step.

Step 1

Parse — XML → clean JSON

Read any MISMO 3.x payload into a predictable object tree. Values stay exact strings — 240000.00, 000123, and true survive untouched.

const json = engine.parse(xml);
Step 2

Explore — relationships & structure

XLink RELATIONSHIP entries are indexed automatically. Traverse the graph with getLinkedEntities() to follow a borrower to their loan to their appraisals.

engine.getLinkedEntities(ref);
Step 3

Compose — JSON → well-formed XML

Serialize your tree back to MISMO XML: exactly one declaration, attributes intact, entities escaped — output you can hand back to a GSE or servicer.

const out = engine.compose(json);

Why this approach is different, and why it works

Most "MISMO helpers" are wrappers around a generic XML parser with default coercion on — which is precisely what mangles money and padded IDs. MISMO.js flips every coercion off, hard-codes the MISMO collection grammar (39 array containers), indexes XLinks, and guards compose output. Every release is verified against the official UCD v2.0 samples plus public third-party MISMO files before it ships.

IV · What You Get

Everything a mortgage team needs

Built for the people who actually live in MISMO land — originators, servicers, appraisal technology, and LOS integration engineers.

🔒

100% Data Fidelity

No numeric coercion, ever. Money, rates, and padded identifiers round-trip exactly — verified across 20 real MISMO files (~1.7 MB), from MISMO 3.4 UCD closing data to 3.6 UAD appraisals.

📦

Predictable Arrays

39 MISMO collection containers — DEAL_SET, DOCUMENT_SET, FEE, LOAN_IDENTIFIER and friends — always come back as arrays.

🔗

XLink Relationship Index

MISMO's cross-referencing graph is auto-indexed on parse. Query borrowers, loans, and documents through getLinkedEntities().

🌐

Browser-First, Zero Deps

One <script> tag exposes window.MismoJS (IIFE), or use the ESM / UMD builds in any bundler or Node — no runtime dependencies.

♻️

Lossless Round-Trip

Parse → compose → parse is stable. Exactly one well-formed <?xml> declaration, attributes intact, entity escaping handled.

✓

Tested Before It Ships

120+ assertions across two suites: offline UCD v2.0 samples and a network harness that pulls public third-party MISMO files at test time.

V · Common Questions

MISMO.js — frequently asked questions

Straight answers for developers evaluating MISMO.js.

What is MISMO.js?

MISMO.js is a zero-dependency JavaScript library for parsing, transforming, and generating MISMO 3.x mortgage XML. It runs in the browser via a plain <script> tag and in Node.js via ESM or UMD imports, with no runtime dependencies.

Does MISMO.js lose money amounts or padded identifiers?

No. MISMO.js disables numeric coercion entirely, so values like 240000.00, 9.0000, and 000123 round-trip exactly as strings. An automated suite verifies 100% of leaf values and attributes survive round-trip across 20 real MISMO files (~1.7 MB).

Can I use MISMO.js without a build step?

Yes. Drop one <script> tag into an HTML page and window.MismoJS is ready — no npm, no bundler, no build. The live demo on this page runs exactly that way. ESM and UMD builds are also included for bundlers and Node.

Which MISMO versions are supported?

MISMO.js targets the MISMO 3.x line (3.3, 3.4, and the GSE UCD v2.0 / ULAD-based files used in production). Any well-formed MISMO XML document is accepted, so newer 3.x releases generally parse without changes.

How do I export well-formed MISMO XML?

Call engine.compose(parsed) with the object returned by engine.parse(xml). Output contains exactly one <?xml> declaration, preserves attributes, and is XML-validated by the test suite on every release.

Is MISMO.js free to use?

Yes. MISMO.js is free and open source on GitHub — no license keys, no accounts, no telemetry. Found a parsing bug? File an issue with sanitized example XML and it will be added to the fidelity regression suite.

VI · Licensing & Assurance

Free, open, and fully transparent

No trial clocks, no license keys, no vendor lock-in. The code is right there on GitHub — audit it, fork it, run it in your own pipeline.

What "open source" assures you
  • Zero cost: free to use in commercial and internal systems, forever.
  • Zero lock-in: the engine is a plain JS object — no service, no API key, no telemetry.
  • Zero surprises: a 120-assertion fidelity suite runs on every release against real UCD files.
  • Fast bug fixes: found a parsing issue? File a GitHub issue with a sanitized sample and it will be verified against the suite.
VII · Author

Built by Corey Burns

MISMO.js is an open-source project built and maintained by Corey Burns.

CB

Corey Burns

Systems Architect · Product Enablement Lead

Built by Corey Burns — Minneapolis-based, working in mortgage technology.

Ready to stop losing data to your XML parser?

Add the script tag, parse your first MISMO file, and export it back — the whole loop takes under 60 seconds.

<!-- browser, zero build step --> <script src="https://cdn.jsdelivr.net/gh/Spuds0588/MISMO.js@main/dist/mismo.iife.js"></script> <script> const engine = new MismoJS.MismoEngine(); const loan = engine.parse(mismoXml).MESSAGE .DOCUMENT_SETS.DOCUMENT_SET[0].DEALS.DEAL[0].LOANS.LOAN[0]; const xmlOut = engine.compose(engine.parse(mismoXml)); </script>

v0.3.0 — UAD 3.6 appraisal + ULAD coverage added · Free forever. New to the project? Open an issue for any MISMO file that trips the engine.