日记
- Jsonix(为XML的JSON接口)是一个JavaScript库,允许您在XML和JSON结构之间转换.
- 通过 Jsonix 您可以将 XML 解析为 JSON( 这个进程叫做 解除挂载)或以 XML 形式将 JSON 序列化(这叫做 排列) (中文(简体) ).
- 这些转换是基于可手动写入或由XML Schema生成的可声明的XML/JSON映射.
Jsonix 的优点 :
- 结构严密
- 类型安全
- 双向
- (可选) XML Schema 驱动
另见其他 Jsonix 特性。 。 。 .
示例
这里有个例子 定购单计划a (试试看) 在 JSFiddle 网上) (中文(简体) ).
生成绘图
java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar
-d mappings -p PO purchaseorder.xsd
生成用于 purchaseorder.xsd 计划 mappings\PO.js; 绘图将放置在变量中 PO。 。 。 .
将 XML 分析为 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);
});
你也可以这样 unmarshalString, (中文(简体) ), unmarshalDocument 和(节点下) unmarshalFile。 。 。 .
将JS 序列化为 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: { /* ... */ }
}
});
你也可以这样 marshalString。 。 。 .
Jsonix 特性
- 在几乎所有现代浏览器中运行
- 运行在 节点.js
- 使用通用JS模块、AMD模块和香草(全局,没有任何模块加载器)运行
- 双向(XML - > JS以及JS - > XML)
- 执行 排列 (将 JavaScript 对象序列化为 XML)
- 因此支持字符串数据和 DOM 节点
- 执行 解除挂载 (从 XML 分析一个 JavaScript 对象)
- 支持字符串数据、 DOM 节点、 URL 或文件( 有节点
- 由可控制 JavaScript 对象如何转换成 XML 或反之相向的宣告性 XML/JS 映射驱动
- 绘图可以基于 XML Schema 自动生成
- 强结构 - XML/ 对象映射描述 JavaScript 对象的结构
- 强类型 - XML 侧的字符串内容和JavaScript 侧的值之间的转换由声明属性类型控制
- 提供可扩展类型系统
- 支持大多数 XML Schema 简单类型( 插入 QNames)
- 支持列举、列表和联盟简单类型
- 允许添加自己的简单类型
- 支持由多个属性组成的复杂类型
- 扩展后产生的复杂类型支持
- 提供高级财产系统
- XML 内容的字符串处理值、 属性、 元素、 元素、 元素参考属性
- 任意属性, XML 内容的“ 放松” 处理的任何元素属性