Javascript 使用JSONIX从XML模式创建空对象

Javascript 使用JSONIX从XML模式创建空对象,javascript,json,xml,jsonix,Javascript,Json,Xml,Jsonix,是否有可能使用JSONIX从XML模式生成空对象?我通常在创建适合XML模式的新JS对象时遇到问题。因此,这将非常有帮助。任何例子都将不胜感激。 我尝试了以下方法来创建一个新对象。在本例中,节点类型是一个复杂的类型名 {name: {localpart: nodeType}, value:{}}; 然后我尝试填充值(我遍历模式映射以找出每种类型的所有可能属性)。但是,我得到了以下错误,例如,对我帮助不大:元素[ELEMNAME]在此上下文中是未知的 如果这是不可能的,我通常如何创建一个新的对象

是否有可能使用JSONIX从XML模式生成空对象?我通常在创建适合XML模式的新JS对象时遇到问题。因此,这将非常有帮助。任何例子都将不胜感激。 我尝试了以下方法来创建一个新对象。在本例中,节点类型是一个复杂的类型名

{name: {localpart: nodeType}, value:{}};
然后我尝试填充值(我遍历模式映射以找出每种类型的所有可能属性)。但是,我得到了以下错误,例如,对我帮助不大:元素[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。

免责声明:我是的作者

如果我没有弄错你的问题,你会问,你怎么能构造一个JS对象,然后用Jsonix进行封送

大多数人的诀窍是使用XML“它应该是这样的”,将其与日志
JSON.stringify(myObject,null 2)
解组,诸如此类。然后您将看到适当的JS应该是什么样子

你也可以做的就是去做。这将为您提供类似的JSON模式,提供编组所需JSON的完整描述

我也考虑实现像类型化的类的生成,但是这是未来的音乐。 更新

对不起,我还是不太确定你的问题是什么。您已经添加了一个JSON模式,该模式定义了一个带有字符串
id
和十进制
x
y
属性的
NodeType
复杂类型

你在问这个空对象是什么。嗯,对于复杂类型,空对象将是
{}

具有值的对象将是例如
{id:“someId”,x:4,y:2}

但在XML中,不能只封送一个复杂类型,而是封送一个复杂类型的元素。它以
{name:…,value:…}
的形式表示。所以你可能会有这样的想法:

{
  "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执行。底线是,要取消/封送的复杂对象的现有XML或隐式结构中的逐行赋值必须提供给使用Jsonix作为其特性的代码。这与Java(如JAXB)不同,在Java(如JAXB)中,可以使用XSD生成一个新的复杂对象及其所有结构,然后由Java程序填充(通过树中的赋值或从XML中解组)。

非常感谢您的支持!这是否意味着我必须创建每种复杂类型的空XML对象?我将尝试这两种方法,事实上我已经生成了一个JSON模式。但是,我不知道如何从中自动创建一个空对象,这是必需的,因为我有一个包含多个文件的非常大的架构。@mapf现在我不太清楚“空XML对象”是什么意思,以及为什么必须按复杂类型创建它<代码>{}是空对象。如果您只需要知道JSON应该是什么样子,可以解组或读取生成的JSON模式或Jsonix映射。使用TypeScript,您可以在IDE中自动完成,但这是未来的音乐。问你是否需要更透彻的解释。我在我的开始文章中添加了一个例子。也许现在更清楚一点了。@mapf对不起,不太清楚。但我已经尝试提供更多信息,请查看我的更新。非常感谢,您的更新帮助了我!我没有意识到我需要照顾的结构!