问题标签 [jsonix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bluebird - 为什么 Promisification 对于某些方法但不是全部失败?
该jsonix
库不遵循first argument must be an error
约定,因此我决定使用 bluebird 并像这样承诺它:
但这会无限期地挂起!然而,如果我只是将其保存xmlResponse
到一个文件中,然后用不同的方法处理它:unmarshalFile
......承诺似乎工作得很好!
所以我的问题是,为什么一种方法的承诺会失败,而另一种方法则不会?
json - 将 xsd 转换为 json 模式(Jsonix、XMLSpy)
我正在尝试将 xml 架构转换为 json 架构。
出于某种原因,我得到的 json 模式很奇怪,而且不正确。我使用 Jsonix 和 Altova XMLSpy 2017
例如,这是给定的 xsd
这是我从 Jsonix 获得的 json 模式:
为什么我在那里得到了所有这些功能?我做了什么破事?
使用 Altova XMLSpy 的结果完全不同:
谢谢
json - JSONIX 如何拥有强大的 XML 验证
我只是尝试运行 JSONIX 示例采购订单。我这样做就像在 Highscore 网站上提到的那样。让我感到奇怪的是,这个示例基于 XSD 的使用,传入 XML 的验证用于具有子节点的元素,但不适用于简单的标签。
这将显示一个错误:
这不是:
那么,是否可以打开强验证,因为<quantity_will_cause_error>
它不是有效元素。
亲切的问候
马库斯
json - JSONIX / AJV:如何在 JSONIX 中使用 Xinclude 进行验证?
我尝试在 nodejs 上使用 JSONIX 并使用 AJV 来验证传入的 XML。
通常我使用这样的东西:
新闻.xml:
但现在我会用这个
作者.xml:
新闻.xml:
是否可以使用 JSONIX 和 AJV 来验证这样的结构?我什至有一个 XSD 和生成的 JSON-Schema。
亲切的问候
马库斯
java - 如何在 jsonix 中包含生成的包之外的类型?
我已经从 jaxb2 生成中排除了一些 xml 类型,因为 Java 中已经存在相应的类。一代人完美地工作,班级建立了。
当我尝试通过本教程包含类型时,jsonix 仅在包中搜索具有生成的 jaxb2 类的类。所以它看起来像generate.entity.Position而不是entity.Position类。
namespaces - jsonix - 如何创建一个有前缀但没有命名空间的元素?
我需要发送包含以下元素的 XML:
我很难使用 Jsonix 形成“c:condition”和“a:condition”Qname。两个 Qname 都包含前缀但没有命名空间。
我目前的代码是:
这将导致以下结果:
<c:condition xmlns:c="c">
任何人都知道如何使用 Jsonix 生成所需的 Qname -“c:condition”,它没有命名空间URI?
collections - Jsonix - 是否可以创建一个集合并在属性声明中声明 2 个或更多元素?
预期的 XML 格式如下:
和<a:condition>
两者<operator>
都需要在 acollection
中,因为两者都可以具有 XML 请求所需的数量。
编辑 Type:elements
代码如下:
EDITED看起来elements
可以满足我的要求。解组也有效。现在我只需要弄清楚如何从 Json 格式编组它。任何建议将不胜感激
jsonix - 在使用 JSONIX 编组/解组期间删除空属性
我注意到在从 JSON 到 XML 的转换中,如果我的 JSON 对象之一为空,则 XML 中不存在该对象,例如
JSON
{
"name": {
"namespaceURI": "",
"localPart": "myApp",
"prefix": "",
"key": "myApp",
"string": "myApp"
},
"value": {
"TYPE_NAME": "generated.MyApp",
"inputData": [{
"TYPE_NAME": "generated.MyApp.InputData",
"dataType": "text",
"mandatory": false,
"length": 25,
"valid": true,
"value":null
}]
}
}
转换为 XML 输出 (marshalString)
var context2 = new j.Context([generated2]);
var marshaller2 = context2.createMarshaller();
var objectAsXMLString2 = marshaller2.marshalString(template2);
<myApp>
<inputData>
<dataType>text</dataType>
<mandatory>false</mandatory>
<length>25</length>
<valid>true</valid>
</inputData>
</myApp>
然后再次转换回 JSON (unmarshalString)
var unmarshaller2 = context2.createUnmarshaller();
var resultJSON2 = unmarshaller2.unmarshalString(objectAsXMLString2 );
{
"name": {
"namespaceURI": "",
"localPart": "myApp",
"prefix": "",
"key": "myApp",
"string": "myApp"
},
"value": {
"TYPE_NAME": "generated.MyApp",
"inputData": [{
"TYPE_NAME": "generated.MyApp.InputData",
"dataType": "text",
"mandatory": false,
"length": 25,
"valid": true
}]
}
}
如您所见,信息丢失了。当发生完整的转换循环时,JSON -> XML -> 回到 JSON,一些属性没有保留。任何为空的东西都会被丢弃——在这种情况下,它是属性“值”。对于期望对象上存在某些属性的下游应用程序来说,这是一个问题。
我用于生成 jsonix 映射对象的 XML 模式如下所示
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="myApp">
<xs:complexType>
<xs:sequence>
<xs:element name="inputData" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence >
<xs:element type="xs:string" name="dataType"/>
<xs:element type="xs:boolean" name="mandatory"/>
<xs:element type="xs:short" name="length"/>
<xs:element type="xs:string" name="elementId"/>
<xs:element type="xs:string" name="formId"/>
<xs:element type="xs:anySimpleType" name="value" />
<xs:element type="xs:boolean" name="valid"/>
<xs:element type="xs:short" name="precision"/>
<xs:element type="xs:short" name="scale"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
使用 jsonix-schema-compiler 生成的映射是
var generated_Module_Factory = function () {
var generated = {
name: 'generated',
typeInfos: [{
localName: 'MyApp',
typeName: null,
propertyInfos: [{
name: 'inputData',
minOccurs: 0,
collection: true,
elementName: {
localPart: 'inputData'
},
typeInfo: '.MyApp.InputData'
}]
}, {
localName: 'MyApp.InputData',
typeName: null,
propertyInfos: [{
name: 'dataType',
required: true,
elementName: {
localPart: 'dataType'
}
}, {
name: 'mandatory',
required: true,
elementName: {
localPart: 'mandatory'
},
typeInfo: 'Boolean'
}, {
name: 'length',
required: true,
elementName: {
localPart: 'length'
},
typeInfo: 'Short'
}, {
name: 'elementId',
required: true,
elementName: {
localPart: 'elementId'
}
}, {
name: 'formId',
required: true,
elementName: {
localPart: 'formId'
}
}, {
name: 'value',
required: true,
elementName: {
localPart: 'value'
},
typeInfo: 'AnySimpleType'
}, {
name: 'valid',
required: true,
elementName: {
localPart: 'valid'
},
typeInfo: 'Boolean'
}, {
name: 'precision',
required: true,
elementName: {
localPart: 'precision'
},
typeInfo: 'Short'
}, {
name: 'scale',
required: true,
elementName: {
localPart: 'scale'
},
typeInfo: 'Short'
}]
}],
elementInfos: [{
typeInfo: '.MyApp',
elementName: {
localPart: 'myApp'
}
}]
};
return {
generated: generated
};
};
if (typeof define === 'function' && define.amd) {
define([], generated_Module_Factory);
}
else {
var generated_Module = generated_Module_Factory();
if (typeof module !== 'undefined' && module.exports) {
module.exports.generated = generated_Module.generated;
}
else {
var generated = generated_Module.generated;
}
}
有没有办法在转换过程中保留所有属性,即使它们为空?
node.js - Jsonix - 解组文件元素时出错
我正在尝试将 xml 文件转换为具有 xsd 架构的 JSON 对象。我正在使用 nodeJS 来做到这一点。我已经创建了映射对象,但我不断收到此错误:“(..)无法解组,因为在此上下文中未知,并且该属性不允许 DOM 内容。”
这是我的代码:
这是 xsd 模式的一部分(只是标头定义):
关于我做错了什么的任何想法?
node.js - Jsonix 仅获取映射,但不在导出的 JS 文件中,但可能在 json 或变量中
我已经浏览了 jsonix 的文档,可在
https://github.com/highsource/jsonix/wiki
有什么方法可以直接将映射生成为 json 或在变量中生成,而不是作为我们需要在应用程序中导出和导入/需要的文件