Skip to content

Repository files navigation

Jsonix

  • Jsonix (JSON interfaces for XML) is a JavaScript library which allows you to convert between XML and JSON structures.
  • With Jsonix you can parse XML into JSON (this process is called unmarshalling) or serialize JSON in XML form (this is called marshalling).
  • These conversions are based on declarative XML/JSON mappings which can be written manually or generated from an XML Schema.

Jsonix advantages:

  • Strongly structured
  • Type-safe
  • Bidirectional
  • (Optionally) XML Schema-driven

See also the other Jsonix features.

Example

Here's a working example for the purchase order schema (try it online in JSFiddle).

Generate mappings

java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar
-d mappings -p PO purchaseorder.xsd

Generates mappings for the purchaseorder.xsd schema in the mappings\PO.js; mappings will be placed in the variable PO.

Parse XML into JS

// Include or require PO.js so that PO variable is available// For instance, in node.js:varPO=require('./mappings/PO').PO;// First we construct a Jsonix context - a factory for unmarshaller (parser)// and marshaller (serializer)varcontext=newJsonix.Context([PO]);// Then we create a unmarshallervarunmarshaller=context.createUnmarshaller();// Unmarshal an object from the XML retrieved from the URLunmarshaller.unmarshalURL('po.xml',// This callback function will be provided// with the result of the unmarshallingfunction(unmarshalled){// Alice Smithconsole.log(unmarshalled.value.shipTo.name);// Baby Monitorconsole.log(unmarshalled.value.items.item[1].productName);});

You can also unmarshalString, unmarshalDocument and (under node.js) unmarshalFile.

Serialize JS as XML

// Create a marshallervarmarshaller=context.createMarshaller();// Marshal a JavaScript Object as XML (DOM Document)vardoc=marshaller.marshalDocument({name: {localPart: "purchaseOrder"},value: {orderDate: {year: 1999,month: 10,day: 20},shipTo: {country: "US",name: "Alice Smith",street: "123 Maple Street",city: "Mill Valley",state: "CA",zip: 90952},billTo: {/* ... */},comment: 'Hurry, my lawn is going wild!',items: {/* ... */}}});

You can also marshalString.

Jsonix Features

  • Runs in almost any modern browser
  • Runs in Node.js, package.json can be found here
  • Runs with CommonJS modules, AMD modules as well as vanilla (globals, without any module loader)
  • Bidirectional (XML -> JS as well as JS -> XML)
  • Implements marshalling (serializing the JavaScript object into XML)
    • Supports string data and DOM nodes as result
  • Implements unmarshalling (parsing a JavaScript object from XML)
    • Supports string data, DOM nodes, URLs or files (with Node.js) as source
  • Driven by declarative XML/JS mappings which control how JavaScript object is converted into XML or vice versa
  • Mappings can be automatically generated based on the XML Schema
  • Strongly-structured - XML/object mappings describe structures of JavaScript objects
  • Strongly-typed - Conversion between string content on XML side and values on the JavaScript side is controlled by declared property types
  • Provides extensible type system
    • Supports most XML Schema simple types (inlcuding QNames)
    • Supports enumerations, list and union simple types
    • Allows adding own simple types
    • Supports complex types consisting of several properties
    • Supports deriving complex types by extension
  • Provides advanced property system
    • Value, attribute, element, element reference properties for string processing of XML content
    • Any attribute, any element properties for "lax" processing for XML content

Documentation

Credits

Logo WebStorm

Jsonix is developed with WebStorm, the smartest JavaScript IDE.
Many thanks to JetBrains for providing a free open-source license for Jsonix development.

About

Powerful XML<->JSON JavaScript mapping library.

Resources

Stars

372 stars

Watchers

15 watching

Forks

Releases

Packages

Used by

Contributors

Languages