gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:43:41 28 4
gpt4 key购买 nike

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

最佳答案

免责声明:我是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",
"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 模式的所有必需元数据(如元素、属性和类型名称)。

免责声明:目前这是一项新的实验性功能。有一定的已知limitations and missing functionality .但我希望这会很快显现和成熟。

链接:

关于xml - 从 XML 模式 (XSD) 生成 Json 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922026/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com