有人知道如何从现有的XML模式(XSD文件)生成JSON schema吗?是否有相应的工具可用?
有人知道如何从现有的XML模式(XSD文件)生成JSON schema吗?是否有相应的工具可用?
今天,我发布了新版本的Jsonix Schema Compiler,其中包含新的JSON模式生成功能。
让我们以采购订单模式为例。下面是一个片段:
<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模式。以下是结果示例(已编辑简化):{
"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 Schema 是从原始的 XML Schema 派生而来的。它不是完全的 1:1 转换,但非常接近。
生成的 JSON Schema 与生成的 Jsonix 映射匹配。因此,如果您使用 Jsonix 进行 XML<->JSON 转换,您应该能够使用生成的 JSON Schema 验证 JSON。它还包含了来自原始 XML Schema 的所有必需元数据(如元素、属性和类型名称)。
免责声明:目前这是一个新的实验性功能。存在某些已知的 限制和缺失的功能。但我预计这将非常快地展现和成熟。
链接:
npm install
schema
部分不是遵循 JSON Schema 规范吗? - lexicoreException in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource
,我的操作系统是ubuntu20.04,Java版本是11.0.17,我的安装步骤是:1. sudo apt install default-jre
2. npm install jsonix-schema-compiler
下载了purchaseorder.xsd文件。运行命令为:java -jar ./node_modules/jsonix-schema-compiler/lib/jsonix-schema-compiler-full.jar -generateJsonSchema -p PO purchaseorder.xsd
。 - akppJSON Schema并非旨在与XML Schema的功能等效。两者之间有各自独有的功能。
一般而言,你可以创建一个从XML到JSON的映射,然后再进行反向映射,但是对于XML schema和JSON schema并非如此。
话虽如此,如果你已经将XML文件映射到JSON,则很可能可以设计一个JSON Schema,以几乎相同的方式验证JSON,就像XSD验证XML一样。但这不是直接的映射,并且不能保证它将完全与XSD验证XML相同地验证JSON。
因此,除非这两个规范被制定为100%功能兼容,否则将验证系统从XML / XSD迁移到JSON / JSON Schema将需要人工干预。
xsd2json
,可以在XML模式(XSD)和JSON模式文件之间进行转换。"PurchaseOrderType": {
"type": "object",
"properties": {
"shipTo": {
"$ref": "#/definitions/USAddress"
},
"billTo": {
"$ref": "#/definitions/USAddress"
},
"comment": {
"$ref": "#/definitions/comment"
},
"items": {
"$ref": "#/definitions/Items"
},
"orderDate": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}.*$"
}
},
npm install -g jgexml
进行了安装。然后 xsd2jsjon
不在路径中。我尝试了 node C:\Users\Oliver\AppData\Roaming\npm\node_modules\jgexml\xsd2json.js
。然而,这只是返回了一个错误。是否有命令行实用程序可用? - kopportestxsd2j.js
中有一个CLI示例。 - MikeRalphson将您的XML模式复制到在线工具中,获取可从XML模式生成JSON模式的代码。
没错,但是在使用xmlspy将json转换为xml之后,你可以使用trang应用程序(http://www.thaiopensource.com/relaxng/trang.html)从xml文件中创建xsd。