Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从XSD和数据生成XML,同时跳过生成类_Java_Xml_Xsd_Xml Generation - Fatal编程技术网

Java 从XSD和数据生成XML,同时跳过生成类

Java 从XSD和数据生成XML,同时跳过生成类,java,xml,xsd,xml-generation,Java,Xml,Xsd,Xml Generation,我有以下重复出现的模式:我用一些参数调用一个黑盒,得到的结果是List(或类似的东西),其中每个映射都有相同的键集。然后,我需要生成表单的XML <list> <item key1='value1' ...> <keyX>valueX</keyX> </item> </list> valueX 列表和项元素的名称以及某个键是项的子元素还是项的属性都随单个任务的不同而不同。我希望尽量减少映

我有以下重复出现的模式:我用一些参数调用一个黑盒,得到的结果是
List
(或类似的东西),其中每个映射都有相同的键集。然后,我需要生成表单的XML

<list>
    <item key1='value1' ...>
        <keyX>valueX</keyX>
    </item>
</list>

valueX
列表和项元素的名称以及某个键是项的子元素还是项的属性都随单个任务的不同而不同。我希望尽量减少映射键到XML的手工连接

我最初设想的方法是创建一个XML模板,用于描述元素/属性映射的映射键。然后我想这就是XSD的用途,所以我可以使用这种格式来定义模板。但是,我找不到从XSD生成XML的好解决方案。我看了一下JAXB,它对于我的场景来说似乎太重了:我不需要Java类——拥有域对象就好了,除非我从不对数据做任何事情。然后,我必须首先将我的数据映射到类,这似乎是一件效率低下的事情,因为仅仅用封送器转储它们。其次,我希望保持更大的灵活性——如果数据格式(即每个映射中的键集)发生更改,我只需修改模式,而不必重新生成源和重建


感谢您通读:)

我记得大约一年前做过类似的事情。我所做的是编写和使用XSLT,它获取一些参数,并使用JAXP对其进行处理以生成XML


如果您是XSL新手,这可能有点棘手,但是有很多很好的文档

只是想了一下,我认为,使用JAXB也可以做到这一点,但您需要更全面地描述预期的格式,以便我们确定通过定制JAXB编组来实现这一点是否明智。