@boundlessgeo/jsonix

中文文档
2.4.3发布于 2017/06/01CommonJS近 30 天下载 2789

Jsonix (JSON interfaces for XML) is a JavaScript library which allows converting between XML and JSON structures.

原始使用文档
文档目录6 节
  1. Example
  2. Generate mappings
  3. Parse XML into JS
  4. Serialize JS as XML
  5. Jsonix Features
  6. Documentation

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:
var PO = require('./mappings/PO').PO;

// First we construct a Jsonix context - a factory for unmarshaller (parser)
// and marshaller (serializer)
var context = new Jsonix.Context([PO]);

// Then we create a unmarshaller
var unmarshaller = context.createUnmarshaller();

// Unmarshal an object from the XML retrieved from the URL
unmarshaller.unmarshalURL('po.xml',
    // This callback function will be provided
    // with the result of the unmarshalling
    function (unmarshalled) {
        // Alice Smith
        console.log(unmarshalled.value.shipTo.name);
        // Baby Monitor
        console.log(unmarshalled.value.items.item[1].productName);
    });

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

Serialize JS as XML

// Create a marshaller
var marshaller = context.createMarshaller();

// Marshal a JavaScript Object as XML (DOM Document)
var doc = 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
  • 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

版本与发布记录

@boundlessgeo/jsonix 共发布 2 个版本,首次发布于 2017/05/30;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.4.3latest2017/06/019 年前
2.4.22017/05/309 年前

关于 @boundlessgeo/jsonix 的常见问题

@boundlessgeo/jsonix 是什么?

Jsonix (JSON interfaces for XML) is a JavaScript library which allows converting between XML and JSON structures.

如何安装 @boundlessgeo/jsonix?

在项目目录运行 npm install @boundlessgeo/jsonix,或使用 pnpm add / yarn add / bun add。

@boundlessgeo/jsonix 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/boundlessgeo__jsonix 是否存在。

@boundlessgeo/jsonix 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@boundlessgeo/jsonix 可以商用吗?

@boundlessgeo/jsonix 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@boundlessgeo/jsonix 的下载量有多少?

根据 npm 官方下载统计,@boundlessgeo/jsonix 在 2026/10/09 – 2026/11/07 这 30 天内被下载 2,789 次,日均约 93 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@boundlessgeo/jsonix 还在维护吗?

最新版本 2.4.3 发布于 2017/06/01(9 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2017/05/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。