如何在Java中使用xsd创建对象树?

时间:2012-02-15 11:54:09

标签: java tree xsd

我想知道如何在XSD文件中创建一个Object树。这有什么框架吗?

函数签名有点接近这个:

TreeSet<Object> convertToTree(File xsdFile);

所以你可以看到函数convertToTree应该读取xsd文件并生成一个Tree集合。

有人可以发一些例子吗?

4 个答案:

答案 0 :(得分:5)

您可以选择使用JAXBXMLBean

如果您需要示例,请参阅generate JAXB classes from an XML schema file

这样做:"%java_home%\bin\xjc" -p [package_name] [xsd_file].xsd

答案 1 :(得分:2)

您可以使用JAXB解决此问题。 据我所知,它甚至可以整合到Netbeans中。

在Netbeans中:

选择您的项目 - &gt;右键单击 - &gt;新

选择其他 - &gt;类别= XML; FileTypes = JAXB Binding

其余的应该是自我解释。

但是,如果您没有xsd定义的固定xml方案,但是您希望显示xsd文件定义的xml方案的结构,则可以执行以下操作:

由于xsd文件也始终是xml文件,因此您应该编写一个描述xsd文件的xsd文件。 (我确定已经有xsd文件的方案)。然后,您可以使用此上述xsd文件来编组和解组其他xsd文件。但我没有测试这个解决方案......

答案 2 :(得分:2)

JDK附带的'xjc'实用程序可以从命令行运行,将模式作为参数传递。它会生成代表模式结构的Java类。然后,您可以使用这些类将XML转换为Java表示并返回(请参阅JAXB和编组/解组)。

答案 3 :(得分:0)

在XML Schema Definition(xsd)中有一些elememnt类型,这些是在xsd文件中创建对象树时的根元素。

正如Kuldeep所说,这个xsd文件适用于JAXB(Java绑定的Java架构)和JavaBean类。这将使用setter和getter方法生成bean类,以从bean对象中检索数据。

例如,Example.xsd文件具有如下所述的结构。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.project.com/folder/Example" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:vsi="http://www.project.com/folder/Example" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" jxb:version="1.0">
    <xs:annotation>
        <xs:appinfo>
            <jxb:schemaBindings>
                <jxb:package name="com.folder.jaxb.beans.example" />
            </jxb:schemaBindings>
        </xs:appinfo>
    </xs:annotation>

然后使用propertys及其属性定义元素。

然后创建一个build.xml文件,该文件具有运行ant的脚本,然后使用xsd对象树生成新的bean类。

之后,您可以使用xml元素运行项目。