`
FrankTiger
  • 浏览: 3976 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

jaxb浅谈(xml、xsd)

阅读更多
最近项目中需求要将用户上传的xml文件信息导入数据库,项目中使用sun提供的jaxb来解析xml文件并生成java对象,本人根据项目应用和网上的一些评论总结了下
对jaxb的应用,欢迎板砖,废话不多说了
首先我们要从sun下载一个jaxb的压缩包,在命令行模式下,将目录转到jaxb-ri-20101209.jar,用命令java -jar jaxb-ri-20101209.jar
这样,在该目录下会生成一个文件夹jaxb-ri-20101209,文件夹中有bin,docs,lib,samples,看目录就应该明白,在此就不做解释了。

在命令行中进入到安装目录的bin文件夹下运行xjc指令,如果不出现“xjc”is not recogized。。。证明安装成功

使用xsd文件生成java类的方法
在命令行中进入文件夹jaxb-ri-20101209目录的bin文件夹
输入命令
xjc -d c:\test -p com.primeton.governor.dict.xmlloader c:\test\test.xsd

c:\test生成java类的目录
com.primeton.governor.dict.xmlloader生成java类的包路径
c:\test\test.xsd  xsd文件的目录
例如
test.xsd文件
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="resource">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="servlet-mapping"/>
        <xs:element ref="servlet-class"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="servlet-mapping">
    <xs:complexType mixed="true">
      <xs:attribute name="id" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="servlet-class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="test"/>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="test" type="xs:integer"/>
</xs:schema>

生成的java类为
ObjectFactory.java
Resource.java
ServletClass.java
ServletMapping.java

其中一个java类Resource.java,@XmlAccessorType,@XmlType,这是给引擎使用的
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "servletMapping",
    "servletClass"
})
@XmlRootElement(name = "resource")
public class Resource {

    @XmlElement(name = "servlet-mapping", required = true)
    protected ServletMapping servletMapping;
    @XmlElement(name = "servlet-class", required = true)
    protected ServletClass servletClass;

    /**
     * Gets the value of the servletMapping property.
     * 
     * @return
     *     possible object is
     *     {@link ServletMapping }
     *     
     */
    public ServletMapping getServletMapping() {
        return servletMapping;
    }

    /**
     * Sets the value of the servletMapping property.
     * 
     * @param value
     *     allowed object is
     *     {@link ServletMapping }
     *     
     */
    public void setServletMapping(ServletMapping value) {
        this.servletMapping = value;
    }

    /**
     * Gets the value of the servletClass property.
     * 
     * @return
     *     possible object is
     *     {@link ServletClass }
     *     
     */
    public ServletClass getServletClass() {
        return servletClass;
    }

    /**
     * Sets the value of the servletClass property.
     * 
     * @param value
     *     allowed object is
     *     {@link ServletClass }
     *     
     */
    public void setServletClass(ServletClass value) {
        this.servletClass = value;
    }
}


如何将xml文件转换为xsd文件
首先我们要从sun下载一个trang的压缩包,解压缩后会有一个trang.jar的文件
在命令行中进入trang.jar所在的目录,输入如下命令:
java -jar trang.jar XXX1.xml XXX2.xsd

XXX1.xml为当前文件夹目录下的xml文件,也是要转换的xml文件
XXX2.xsd文件为转换后的xsd文件

例如要转换的xml文件为test.xml
<resource>
	<servlet-mapping id="sm">*.action</servlet-mapping>
	<servlet-class name="sc">
		TestListence
		<test>1</test>
	</servlet-class>
</resource>


转换为的xsd文件
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="resource">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="servlet-mapping"/>
        <xs:element ref="servlet-class"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="servlet-mapping">
    <xs:complexType mixed="true">
      <xs:attribute name="id" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="servlet-class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="test"/>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="test" type="xs:integer"/>
</xs:schema>
分享到:
评论

相关推荐

    用jaxb自动生成xsd对像

    当你需要在XML与Java类之间进行数据交换时,JAXB提供了一种自动化的机制,可以将XML Schema (XSD) 文件转换为Java类,反之亦然。这个过程被称为“绑定”或“反绑定”。 标题“用jaxb自动生成xsd对像”指的是利用...

    使用jaxb根据xsd生成xml文档

    **使用JAXB根据XSD生成XML文档** 在Java开发中,XML文档的生成与解析是一项常见的任务,特别是在处理数据交换和存储时。JAXB(Java Architecture for XML Binding)是Java平台标准的一部分,它提供了一种将Java对象...

    JAXB 利用xsd文件生成java类

    在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) 文件来生成对应的Java类,从而简化XML处理的工作流程。 1. **XML Schema (XSD) 文件**: - XML Schema是一种W3C标准,用于定义XML文档的...

    xml文件转xsd文件

    有了XSD文件,开发者可以使用Java API如JAXB(Java Architecture for XML Binding)来自动将XML映射为Java对象,简化数据处理。JAXB允许我们根据XSD文件自动生成Java类,这样在解析XML时,可以直接将XML元素转化为...

    JAVA JAXB 解析XML嵌套子节点为字符串

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...

    jaxb解析生成xml

    1. **绑定(Binding)**:将XML Schema(XSD)转换为Java类。这个过程生成了Java对象模型,这些模型可以直接用来创建和读取XML文档。这可以通过使用`xjc`命令行工具或在IDE如Eclipse、IntelliJ中集成的工具来实现。 ...

    JAXB工具类 xml转为java对象 java对象转为xml

    JAXB提供了一种自动化的机制,将XML Schema(XSD)映射到Java类,反之亦然。这允许开发者在Java应用中存储和序列化数据为XML格式,同时保持代码的简洁性和可维护性。JAXB的核心组件包括: 1. **Unmarshaller**: ...

    jaxb生成XML例子

    JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...

    利用JAXB进行xml和javabean之间转换

    如果不希望手动添加注解,可以使用JAXB的绑定工具(如`xjc`)从XML Schema (XSD)文件生成对应的Java类。这一步骤将创建带有正确注解的Java类,以便JAXB理解XML结构。 (3) **实例化Java对象** 创建Java对象并填充...

    JAXB技术实现xml与java对象互相转化代码教程

    使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...

    通过JAXB实现完成java对象和xml的互相转换

    除了注解方式,JAXB还支持使用XML Schema(XSD)文件生成Java类。通过`xjc`工具,可以将XSD转换为Java源代码,这使得模型和XML结构更加清晰地分离。 JAXB的另一个重要特性是它支持XML绑定的定制,包括命名空间处理...

    JAXB 生成XML文件

    Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,用于在Java对象和XML文档之间进行数据绑定。它允许开发人员通过简单的注解(annotations)将Java类与XML Schema映射,从而实现XML文档的序列...

    最新JAXB解析XML教程

    2. **XSD到Java**: JAXB提供了工具(如`xjc`)将XML Schema(XSD)文件转换为Java类。这使得基于XSD定义的XML结构可以轻松地在Java应用中使用。 3. **Marshalling和Unmarshalling**: Marshalling是将Java对象转换为...

    jaxb (XML操作)

    1. **绑定(Binding)**:JAXB通过绑定文件(一般为.xjb或绑定注解)将XML Schema(XSD)或者Java类与Java类结构关联起来。这个过程创建了一个Java类模型,其中每个XML元素和属性都对应Java类的字段或方法。 2. **...

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    在Java世界中,使用JAXB(Java Architecture for XML Binding)库可以方便地实现XML数据与Java对象之间的转换,从而在WebService中轻松处理数据交换。本篇文章将深入探讨如何使用JAXB进行XML到Object以及Object到XML...

    jaxb解析xml

    JAXB 解析 XML JAXB (Java Architecture for XML Binding) 是一种基于 Java 的 XML 绑定技术,主要功能是根据 DTD 或者 XML Schema 将 XML Element 转化为 Java 类。JAXB 将 XML 文本流转化为 Java Object,把 XML ...

    JAXB与xml相互转换实例

    Java Architecture for XML Binding(JAXB)是Java平台上的一个标准技术,它允许开发者在XML文档和Java对象之间进行无缝转换。这项技术的核心理念是通过自动的编译过程,将XML Schema(XSD)定义的数据结构映射为...

    用JAXB生成一个XML

    ### 使用JAXB生成XML文档详解 #### 一、前言 在现代软件开发过程中,XML(可扩展标记语言)作为一种重要的数据交换格式,被广泛应用于各种应用场景中。特别是在J2EE(Java Platform, Enterprise Edition)领域,...

    stax+jaxb进行xml解析

    在Java中,有多种方法可以解析XML,其中StAX(Streaming API for XML)和JAXB(Java Architecture for XML Binding)是两种常用的技术。本篇文章将详细探讨如何结合StAX和JAXB进行高效的XML解析。 StAX是一种事件...

    JAXB xml与对象转换

    JAXB通过解析XML文档,根据预先定义的XML Schema(XSD)或者Java注解(@XmlRootElement,@XmlElement等),创建相应的Java对象实例。 2. **Marshalling**:相反,Marshalling是将Java对象序列化为XML文档的过程。这...

Global site tag (gtag.js) - Google Analytics