从XML模式(XSD)生成Json模式

有人知道如何从现有的XML模式(XSD文件)生成JSON模式吗?有没有可用的工具?

回答:

:我是Jsonix的作者,Jsonix是一个功能强大的开源XML

<-> JSON JavaScript映射库。

今天,我发布了具有新JSON Schema生成功能的新版本的Jsonix Schema

Compiler。

让我们以采购订单模式为例。这是一个片段:

  <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映射以及匹配的JSON Schema。

结果如下所示(为简洁起见编辑):

{

"id":"PurchaseOrder.jsonschema#",

"definitions":{

"PurchaseOrderType":{

"type":"object",

"title":"PurchaseOrderType",

"properties":{

"shipTo":{

"title":"shipTo",

"allOf":[

{

"$ref":"#/definitions/USAddress"

}

]

},

"billTo":{

"title":"billTo",

"allOf":[

{

"$ref":"#/definitions/USAddress"

}

]

}, ...

}

},

"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模式是从原始XML模式派生的。它不完全是1:1转换,但是非常非常接近。

生成的JSON模式与生成的Jsonix映射匹配。因此,如果将Jsonix用于XML <->

JSON转换,则应该能够使用生成的JSON模式验证JSON。它还包含来自原始XML模式的所有必需元数据(例如元素,属性和类型名称)。

目前,这是一个新的实验性功能。有某些已知的限制和缺少的功能。但我希望这会很快显现并成熟。

链接:

  • NPM的演示采购订单项目 -只需签出并npm install
  • 文献资料
  • 当前版本
  • npmjs.com上的Jsonix Schema编译器

以上是 从XML模式(XSD)生成Json模式 的全部内容, 来源链接: utcz.com/qa/429163.html

回到顶部