使用 xsd 模式和 sql 查询的输出生成 xml

Posted

技术标签:

【中文标题】使用 xsd 模式和 sql 查询的输出生成 xml【英文标题】:generate xml using xsd schema and output of a sql query 【发布时间】:2015-09-04 11:48:52 【问题描述】:

我的 Java 应用程序需要基于 XSD 模式生成 XML。生成的 XML 将包含将由 SQL 查询返回的数据。 任何使用的库都应该与 JBoss EAP6 兼容,可能还兼容旧版本。

有人建议使用 Apache Xalan 库,但我找不到好的起点。

有没有人做过类似的事情?

【问题讨论】:

你应该使用这个 API:youtube.com/watch?v=7_Rq71XA8oc 【参考方案1】:

如果我是你,我会使用 JAXB api 根据 sql 查询的输出创建 xml 输出。 JAXB api 是 J2EE 标准之一,它们是最可能与许多容器兼容的 api。

我没有看到你的代码,但我建议以下解决方案:

您可以使用 ORM 框架或仅使用纯 JDBC。从 DB 获取数据到内存后,您必须将它们保存在一些类似 Bean 的类实例中。

另一方面,您应该为您的 XSD 生成映射类。这通常使用 JAXB 命令行工具或 IDE 工具(在后台使用该命令行工具)来完成。我建议使用 Intellij-Idea 或 Eclipse JAXB 工具。

智能: 例如,如果您有一个 CustomerOrders.xsd 文件,您可以将它放在一个包中,然后通过右键单击它,从 webservices 子菜单中选择“使用 JAXB 从 xml 模式生成 java 代码...”。然后会出现一个对话框来选择输出路径等。您可以在下图中看到:

您使用哪种工具并不重要。最后,他们将为您的 XSD 映射创建一个或多个 java 类。这些类必须存储在您的代码可以在运行时访问的包或文件夹中。然后您唯一的工作就是将您的数据持有者 bean 实例转换为此生成的类的实例。之后,JAXB 会按照您通过 api 的命令将它们编组为 XML 格式的字符串或文件。

使用 JAXB api 的示例代码如下:

try 

    CustomerType data = new CustomerType(); // This is a mapping class generated by jaxb tools.
                                            // You should convert your fetched data from DB to this type.
                                            // This object is the root object of your xml output file. 
                                            // Maybe you have some other child level classes under this object
                                            //    which creates your nested tags of your output xml data.
    Marshaller marshaller = JAXBContext.newInstance().createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // this is for formatting the output xml data
    marshaller.marshal(data, new File("Wherever you want to save!"));
 
catch (JAXBException e) 

    e.printStackTrace();

希望这会有所帮助,

祝你好运。

【讨论】:

谢谢 STaefi 我会试一试的!问候

以上是关于使用 xsd 模式和 sql 查询的输出生成 xml的主要内容,如果未能解决你的问题,请参考以下文章

使用 XSD 模式来描述“storeToXML”生成的 Java 属性

从 JSON 模式生成 XML 模式 (XSD)

从 C# 类代码生成 xsd 注释和文档标签

根据 XSD 兼容 XML 输入 -> XSD 兼容 XML 输出的 1:1 映射从 XSD 生成 XSLT 文件

使用SQL Server中的OPENXML解析带有内联架构的XML文件

如何以输出生成“创建表语句”的方式格式化 Oracle SQL 查询?