解决方法
免责声明:我是
Jsonix的作者,这是一个功能强大的开源XML< - > JSON JavaScript映射库.
今天我发布了新版Jsonix Schema Compiler,带有新的JSON Schema generation功能.
我们以Purchase Order架构为例.这是一个片段:
<xsd:element name="purchaSEOrder" type="PurchaSEOrderType"/> <xsd:complexType name="PurchaSEOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType>
您可以使用提供的命令行工具编译此架构:
java -jar jsonix-schema-compiler-full.jar -generateJsonSchema -p PO schemas/purchaSEOrder.xsd
编译器生成Jsonix mappings以及matching JSON Schema.
这是结果的样子(为简洁起见编辑):
{ "id":"PurchaSEOrder.jsonschema#","definitions":{ "PurchaSEOrderType":{ "type":"object","title":"PurchaSEOrderType","properties":{ "shipTo":{ "title":"shipTo","allOf":[ { "$ref":"#/definitions/USAddress" } ] },"billTo":{ "title":"billTo",... } },"USAddress":{ ... },... },"anyOf":[ { "type":"object","properties":{ "name":{ "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName" },"value":{ "$ref":"#/definitions/PurchaSEOrderType" } },"elementName":{ "localPart":"purchaSEOrder","namespaceURI":"" } } ] }
现在,这个JSON Schema源自原始的XML Schema.它不完全是1:1的转换,但非常接近.
生成的JSON模式与生成的Jsonix映射匹配.因此,如果您使用Jsonix进行XML< - > JSON转换,您应该能够使用生成的JSON Schema验证JSON.它还包含来自原始XML Schema的所有必需元数据(如元素,属性和类型名称).
免责声明:目前这是一个新的实验性功能.有一些已知的limitations and missing functionality.但我期待这种表现和成熟非常快.
链接:
> Demo Purchase Order Project for NPM – 刚退房并安装npm
> Documentation
> Current release
> Jsonix Schema Compiler on npmjs.com