使用JSONIX从XML架构创建空对象
Create empty object from XML schema using JSONIX
是否可以用JSONIX从XML模式生成一个空对象?我通常在创建适合XML模式的新JS对象时遇到问题。因此,这将非常有帮助。任何例子都将不胜感激。我尝试了以下操作来创建一个新对象。在这种情况下,NodeType是一个复杂的类型名称。
{name: {localpart: nodeType}, value:{}};
然后我尝试填充值(我遍历模式映射,找出每种类型的所有可能属性)。然而,我得到了以下错误,这对我没有太大帮助:Element[ELEMNAME]在这种情况下是未知的
如果这不可能,我通常如何创建一个应该符合模式的新对象?
非常感谢你的想法!
编辑:好的,在这里更具体地说一个例子:
"NodeType":{
"type":"object",
"title":"NodeType",
"properties":{
"id":{
"title":"id",
"allOf":[
{
"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string"
}
],
"propertyType":"attribute",
"attributeName":{
"localPart":"id",
"namespaceURI":""
}
},
"x":{
"title":"x",
"allOf":[
{
"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/decimal"
}
],
"propertyType":"attribute",
"attributeName":{
"localPart":"x",
"namespaceURI":""
}
},
"y":{
"title":"y",
"allOf":[
{
"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/decimal"
}
],
"propertyType":"attribute",
"attributeName":{
"localPart":"y",
"namespaceURI":""
}
}
这是我的XSD文件中的一个JSON模式摘录。我想要的是一个看起来像这样的对象:
{id:"", x: "", y: ""}
目标是将该对象编组为XML。
免责声明:我是Jsonix的作者。
如果我答对了你的问题,你会问,你怎么能构建一个JS对象,然后用Jsonix进行编组。
大多数人所做的技巧是获取一个XML"这就是它应该看起来的样子",对它和日志JSON.stringify(myObject, null 2)
进行解组,诸如此类。然后您将看到合适的JS应该是什么样子。
您还可以从XML模式中生成一个JSON模式。这将为您提供一个类似于此的JSON模式,提供编组所需的JSON的完整描述。
我也考虑实现一些类似TypeScript类的生成,但这是未来的音乐。
更新
很抱歉,我仍然不太确定你的问题是什么。你添加了一个JSON Schema,它定义了一个具有字符串id
和十进制x
和y
属性的NodeType
复杂类型。
你在问这个类型的空对象是什么。好吧,你的复杂类型的一个空对象就是{}
具有值的对象将是例如{id:"someId", x: 4, y:2}
。
但在XML中,不能仅封送一个复杂类型,而是封送复杂类型的元素。其以CCD_ 8的形式表示。所以你可能会有这样的东西:
{
"name": {
"namespaceURI": "uri",
"localPart": "root"
},
"value": {
"id" : "someId",
"x" : 4,
"y" : 2,
"TYPE_NAME": "NodeType"
}
}
希望这能有所帮助。
为了进一步澄清这个问题:Javascript是一种松散类型的语言。即使JS类具有原型结构,JS对象也只有在其成员中填充了值时才具有该结构。因此,Jsonix从XSD生成JS映射,然后JS脚本从映射实例化一个新的JS对象,并不会创建一个未填充的结构。只有当对象填充了值时,才会创建结构。这种填充可以直接在代码中完成,方法是为新对象分配值,向下钻取包含成员的树,在将该成员添加到复杂的整体JS对象后填充每个成员,程序员使用XSD或其文档作为指导。或者,复杂的整体JS对象可以由一个JSON块填充,在这种情况下,JSON可以从Jsonix解组的复杂对象的XML生成。Jsonix可以执行解组(以及任何封送处理)。底线是,必须向使用Jsonix实现其功能的代码提供要取消/封送的复杂对象的现有XML,或隐式结构中的逐行分配。这与Java(例如JAXB)不同,在Java中,XSD可以用于生成一个新的复杂对象,该对象的所有结构都由Java程序填充(通过树中的赋值或从XML中解组)。
- 在创建对象后附加一个jquery事件
- 错误:自动化服务器可以't创建对象
- 如何在不使用 new 关键字的情况下从函数创建对象
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 创建对象函数原型和代码是错误的
- 使用Undercore创建对象集合
- 如何在JavaScript中创建对象时使用变量的值
- 正在创建对象的递归列表
- 这两种不同的创建对象文字的方法有什么区别
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 使用字符串作为名称创建对象
- 使用参数创建对象
- 如何在JS中创建对象的可变和不可变副本
- 用javascript创建对象的dynamic数组
- Javascript,用vars创建对象的最佳方法
- 离子幻灯片框中未创建对象
- 在创建对象时调用javascript函数
- JavaScript - 有没有办法动态创建对象的新实例
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- EmberJS - 在创建对象后添加绑定