转换XSD到JSON模式(Jsonix,XMLSpy的)

我想的XML模式转换成JSON模式。转换XSD到JSON模式(Jsonix,XMLSpy的)

由于某些原因,我得到的json模式很奇怪,而且不正确。我用Jsonix和Altova的XMLSpy的2017年

例如,这是给定的XSD

<?xml version="1.0" encoding="UTF-8"?> 

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://jaxb.vo.dozer.org/Employee" xmlns:tns="http://jaxb.vo.dozer.org/Employee">

<complexType name="EmployeeType">

<sequence>

<element name="FirstName" type="string" minOccurs="1" maxOccurs="1"></element>

<element name="BirthDate" type="date" minOccurs="0" maxOccurs="1"></element>

<element name="LastName" type="string" minOccurs="1" maxOccurs="1"></element>

</sequence>

</complexType>

<element name="Employee" type="tns:EmployeeType"></element>

<element name="EmployeeWithInnerClass">

<complexType>

<sequence>

<element name="FirstName" type="string" minOccurs="1" maxOccurs="1"></element>

<element name="BirthDate" type="date" minOccurs="0" maxOccurs="1"></element>

<element name="LastName" type="string" minOccurs="1" maxOccurs="1"></element>

<element name="Address">

<complexType>

<sequence>

<element name="Street" type="string"></element>

</sequence>

</complexType>

</element>

</sequence>

</complexType>

</element>

</schema>

这是JSON模式,我从Jsonix有:

var org_dozer_vo_jaxb_employee_Module_Factory = function() { 

var org_dozer_vo_jaxb_employee = {

name: 'org_dozer_vo_jaxb_employee',

typeInfos: [{

localName: 'EmployeeType',

typeName: {

namespaceURI: 'http:\/\/jaxb.vo.dozer.org\/Employee',

localPart: 'EmployeeType'

},

propertyInfos: [{

name: 'firstName',

required: true,

elementName: {

localPart: 'FirstName'

}

}, {

name: 'birthDate',

elementName: {

localPart: 'BirthDate'

},

typeInfo: 'Date'

}, {

name: 'lastName',

required: true,

elementName: {

localPart: 'LastName'

}

}]

}, {

localName: 'EmployeeWithInnerClass.Address',

typeName: null,

propertyInfos: [{

name: 'street',

required: true,

elementName: {

localPart: 'Street'

}

}]

}, {

localName: 'EmployeeWithInnerClass',

typeName: null,

propertyInfos: [{

name: 'firstName',

required: true,

elementName: {

localPart: 'FirstName'

}

}, {

name: 'birthDate',

elementName: {

localPart: 'BirthDate'

},

typeInfo: 'Date'

}, {

name: 'lastName',

required: true,

elementName: {

localPart: 'LastName'

}

}, {

name: 'address',

required: true,

elementName: {

localPart: 'Address'

},

typeInfo: '.EmployeeWithInnerClass.Address'

}]

}],

elementInfos: [{

typeInfo: '.EmployeeWithInnerClass',

elementName: {

localPart: 'EmployeeWithInnerClass',

namespaceURI: 'http:\/\/jaxb.vo.dozer.org\/Employee'

}

}, {

typeInfo: '.EmployeeType',

elementName: {

localPart: 'Employee',

namespaceURI: 'http:\/\/jaxb.vo.dozer.org\/Employee'

}

}]

};

return {

org_dozer_vo_jaxb_employee: org_dozer_vo_jaxb_employee

};

};

if (typeof define === 'function' && define.amd) {

define([], org_dozer_vo_jaxb_employee_Module_Factory);

}

else {

var org_dozer_vo_jaxb_employee_Module = org_dozer_vo_jaxb_employee_Module_Factory();

if (typeof module !== 'undefined' && module.exports) {

module.exports.org_dozer_vo_jaxb_employee = org_dozer_vo_jaxb_employee_Module.org_dozer_vo_jaxb_employee;

}

else {

var org_dozer_vo_jaxb_employee = org_dozer_vo_jaxb_employee_Module.org_dozer_vo_jaxb_employee;

}

}

为什么我得到了这一切在那里工作?我做了一些蠕虫?

随着Altova的XMLSpy的结果是不同的,在所有:

{ 

"$schema": "http://json-schema.org/draft-04/schema#",

"additionalProperties": false,

"definitions": {

".tns:Employee": {

"$ref": "#/definitions/tns:EmployeeType"

},

".tns:EmployeeWithInnerClass": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"Address": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"Street": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:string"

}

},

"type": "object"

}

},

"required": [

"Street"

],

"type": "object"

},

"BirthDate": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:date"

}

},

"type": "object"

},

"FirstName": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:string"

}

},

"type": "object"

},

"LastName": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:string"

}

},

"type": "object"

}

},

"required": [

"Address",

"FirstName",

"LastName"

],

"type": "object"

},

"tns:EmployeeType": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"BirthDate": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:date"

}

},

"type": "object"

},

"FirstName": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:string"

}

},

"type": "object"

},

"LastName": {

"additionalProperties": false,

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"$": {

"$ref": "#/definitions/xs:string"

}

},

"type": "object"

}

},

"required": [

"FirstName",

"LastName"

],

"type": "object"

},

"xs:date": {

"type": "string"

},

"xs:string": {

"type": "string"

}

},

"description": "JSON Schema generated by XMLSpy v2017 sp1 (x64) (http://www.altova.com)",

"patternProperties": {

"^\\?\\w+$": {

"type": "string"

}

},

"properties": {

"@xmlns:tns": {

"default": "http://jaxb.vo.dozer.org/Employee"

},

"@xmlns:xs": {

"default": "http://www.w3.org/2001/XMLSchema"

},

"tns:Employee": {

"$ref": "#/definitions/.tns:Employee"

},

"tns:EmployeeWithInnerClass": {

"$ref": "#/definitions/.tns:EmployeeWithInnerClass"

}

},

"type": "object"

}

感谢

回答:

我的Jsonix作者。

您发布的Jsonix输出不是JSON模式,它是您的模式的Jsonix mappings。如果要生成JSON模式,请添加-generateJsonSchema参数。请参阅here。

这里是Jsonix会为您的架构:

{ 

"id":"#",

"definitions":{

"EmployeeWithInnerClass":{

"type":"object",

"title":"EmployeeWithInnerClass",

"required":[

"firstName",

"lastName",

"address"

],

"properties":{

"firstName":{

"title":"firstName",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string"

}

],

"propertyType":"element",

"elementName":{

"localPart":"FirstName",

"namespaceURI":""

}

},

"birthDate":{

"title":"birthDate",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/date"

}

],

"propertyType":"element",

"elementName":{

"localPart":"BirthDate",

"namespaceURI":""

}

},

"lastName":{

"title":"lastName",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string"

}

],

"propertyType":"element",

"elementName":{

"localPart":"LastName",

"namespaceURI":""

}

},

"address":{

"title":"address",

"allOf":[

{

"$ref":"#/definitions/EmployeeWithInnerClass.Address"

}

],

"propertyType":"element",

"elementName":{

"localPart":"Address",

"namespaceURI":""

}

}

},

"typeType":"classInfo",

"propertiesOrder":[

"firstName",

"birthDate",

"lastName",

"address"

]

},

"EmployeeWithInnerClass.Address":{

"type":"object",

"title":"EmployeeWithInnerClass.Address",

"required":[

"street"

],

"properties":{

"street":{

"title":"street",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string"

}

],

"propertyType":"element",

"elementName":{

"localPart":"Street",

"namespaceURI":""

}

}

},

"typeType":"classInfo",

"propertiesOrder":[

"street"

]

},

"EmployeeType":{

"type":"object",

"title":"EmployeeType",

"required":[

"firstName",

"lastName"

],

"properties":{

"firstName":{

"title":"firstName",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string"

}

],

"propertyType":"element",

"elementName":{

"localPart":"FirstName",

"namespaceURI":""

}

},

"birthDate":{

"title":"birthDate",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/date"

}

],

"propertyType":"element",

"elementName":{

"localPart":"BirthDate",

"namespaceURI":""

}

},

"lastName":{

"title":"lastName",

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string"

}

],

"propertyType":"element",

"elementName":{

"localPart":"LastName",

"namespaceURI":""

}

}

},

"typeType":"classInfo",

"typeName":{

"localPart":"EmployeeType",

"namespaceURI":"http://jaxb.vo.dozer.org/Employee"

},

"propertiesOrder":[

"firstName",

"birthDate",

"lastName"

]

}

},

"anyOf":[

{

"type":"object",

"properties":{

"name":{

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName"

},

{

"type":"object",

"properties":{

"localPart":{

"enum":[

"Employee"

]

},

"namespaceURI":{

"enum":[

"http://jaxb.vo.dozer.org/Employee"

]

}

}

}

]

},

"value":{

"$ref":"#/definitions/EmployeeType"

}

},

"elementName":{

"localPart":"Employee",

"namespaceURI":"http://jaxb.vo.dozer.org/Employee"

}

},

{

"type":"object",

"properties":{

"name":{

"allOf":[

{

"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName"

},

{

"type":"object",

"properties":{

"localPart":{

"enum":[

"EmployeeWithInnerClass"

]

},

"namespaceURI":{

"enum":[

"http://jaxb.vo.dozer.org/Employee"

]

}

}

}

]

},

"value":{

"$ref":"#/definitions/EmployeeWithInnerClass"

}

},

"elementName":{

"localPart":"EmployeeWithInnerClass",

"namespaceURI":"http://jaxb.vo.dozer.org/Employee"

}

}

]

}

以上是 转换XSD到JSON模式(Jsonix,XMLSpy的) 的全部内容, 来源链接: utcz.com/qa/263147.html

回到顶部