`
习惯在马桶上思考
  • 浏览: 114844 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

使用JAXB快速解析XML

    博客分类:
  • JAVA
 
阅读更多

项目开发中,经常要用到生成XML和解析XML,其实JDK已经为我们写好了一些处理XML的类,就在javax.xml这个包下面,具体怎么用的呢?

我们今天先来看看JAXB如何快速简单的解析XML

首先我们需要定义XML的格式,JAXB可以通过xsd文件来定义对应的XML,如我做了一个异常处理类,配置如下

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema"xmlns:tns="http://www.kedou.com/exceptionProcessers/"

    targetNamespace="http://www.kedou.com/exceptionProcessers/">

 

    <element name="exceptionProcessers">

       <complexType>

           <sequence>

              <element ref="tns:excludes" minOccurs="0" maxOccurs="1"></element>

              <element ref="tns:processer" minOccurs="0" maxOccurs="unbounded"></element>

           </sequence>

       </complexType>

    </element>

   

    <element name="excludes">

       <complexType>

           <sequence>

              <element ref="tns:pattern" minOccurs="1" maxOccurs="unbounded"></element>

           </sequence>

       </complexType>

    </element>

   

    <element name="pattern" type="string">

    </element>

   

    <element name="processer">

       <complexType>

           <sequence>

              <element ref="tns:pattern" minOccurs="1" maxOccurs="unbounded"></element>

           </sequence>

           <attribute name="id" type="string" use="required"></attribute>

           <attribute name="beanName" type="string"></attribute>

           <attribute name="className" type="string"></attribute>

       </complexType>

    </element>

</schema>

具体的细节就不用说了吧?大家应该一看就明白的

然后是生成对应的bean对象,因为JAXB本来就是将xml直接转化为对象,然后我们就可以直接得到XML中的数据了。JDK为我们提供了一种很简单的生成bean方法,打开dos窗口,输入命令

在命令行下执行:

Xjc –d  java类的存放路径 –p 类的包名 xsd文件名

对应就可以生成对应的Java对象

使用的时候就更简单了,直接调用静态类即可获取!

代码如下:

    private static ExceptionProcessers processersRoot;

 

    static{

       JAXBContext context;

       try {

           context = JAXBContext.newInstance(ExceptionProcessers.class);

           Unmarshaller shaller = context.createUnmarshaller();

           processersRoot = (ExceptionProcessers) shaller.unmarshal(newFile(getClassPath()+"exceprionProcessers.xml"));

       catch (JAXBException e) {

           e.printStackTrace();

       }

    }

是不是很简单的呢?还不赶快来试试……

附表:JAXBXML数据类型和Java数据类型的映射

XML Schema类型

Java数据类型

xsd:string

java.lang.String

xsd:positiveInteger

java.math.BigInteger

xsd:int

int

xsd:long

long

xsd:short

short

xsd:decimal

java.math.BigDecimal

xsd:float

float

xsd:double

double

xsd:boolean

boolean

xsd:byte

byte

xsd:QName

javax.xml.namespace.QName

xsd:dateTime

javax.xml.datatype.XMLGregorianCalendar

xsd:base64Binary

byte[]

xsd:hexBinary

byte[]

xsd:unsignedInt

long

xsd:unsignedShort

int

xsd:unsignedByte

short

xsd:time

javax.xml.datatype.XMLGregorianCalendar

xsd:date

javax.xml.datatype.XMLGregorianCalendar

xsd:g

javax.xml.datatype.XMLGregorianCalendar

xsd:anySimpleType

java.lang.Object

xsd:anySimpleType

java.lang.String

xsd:duration

javax.xml.datatype.Duration

xsd:NOTATION

javax.xml.namespace.QName

 

分享到:
评论

相关推荐

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

    使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml &lt;text&gt;Some text here ...

    jaxb解析生成xml

    以下是一个简单的JAXB解析生成XML的例子: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; public class JaxbExample { public static ...

    jaxb解析xml为对象例子

    在"jaxb解析xml为对象例子"中,我们将探讨如何使用JAXB将XML文件解析为Java对象。首先,我们需要一个XML文件,它包含我们想要映射到Java对象的数据。例如,假设我们有一个名为`employee.xml`的文件,其中包含员工...

    jaxb解析xml

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

    stax+jaxb进行xml解析

    3. **JAXB解析和序列化**: - 使用Unmarshaller对象的unmarshal方法,将XML事件转换为Java对象。 - 反之,使用Marshaller对象的marshal方法,将Java对象转换为XML字符串或写入文件。 4. **所需库**: - StAX的...

    最新JAXB解析XML教程

    1. **数据绑定**: 这是JAXB的核心功能,通过使用`@XmlRootElement`、`@XmlElement`等注解,可以将Java类和XML元素进行绑定。这样,当Java对象被 marshalled(序列化)时,会生成对应的XML文档;当XML文档被...

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

    // 解析XML文件 Person person = (Person) unmarshaller.unmarshal(new File("person.xml")); System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); } } ``` #...

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

    通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发效率和代码的可维护性。这篇博客将深入探讨如何利用JAXB进行xml和javabean之间的转换。 首先,我们需要了解JAXB的基本工作原理。JAXB通过元...

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

    3. 解析XML:有了Java类,我们就可以使用JAXB提供的`Unmarshaller`接口将XML文档解析成Java对象。以下是一个简单的示例: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Unmarshaller ...

    idea 中用jaxb 读xml中数据

    4. **解析XML到Java对象**:使用Unmarshaller对象的`unmarshal`方法,我们可以将XML文件解析为Java对象。 ```java Person person = (Person) unmarshaller.unmarshal(file); ``` 5. **处理解析后的数据**:现在,...

    使用jaxb根据xsd生成xml文档

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

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

    在本文中,我们将深入探讨如何使用JAXB实现Java对象与XML的互相转换。 首先,我们需要理解JAXB的基本工作原理。JAXB基于Java注解,这些注解用于标记Java类和它们的属性,以便JAXB知道哪些元素和属性应该映射到XML中...

    Android支持JAXB(Java Architecture for XML Binding)

    Android支持JAXB(Java Architecture for XML Binding) ...使用JAXB在Android平台上解析XML文件需要注意一些特殊的问题和解决方法,通过正确的配置和编码,我们可以成功地使用JAXB来解析XML文件。

    Java动态解析XML

    在`analysisXml`方法中,开发者使用了JDOM库来解析XML。JDOM是一个Java API,用于处理XML文档,它提供了构建、修改和操作XML文档的能力。以下是方法的主要步骤: 1. 创建一个`StringReader`对象,用于读取XML字符串...

    jaxb (XML操作)

    2. **实例化(Unmarshalling)**:当需要将XML数据转换为Java对象时,JAXB使用Unmarshaller接口解析XML文档,生成对应的Java对象。这个过程是将XML数据"反序列化"为可操作的Java对象。 3. **序列化(Marshalling)*...

    jaxb xml 转map

    然后,JAXB会使用这些类来解析XML并生成相应的对象实例。对于简单的XML,这通常很有效。但是,对于复杂的XML结构,转换为Map可能更为合适。 转换XML到Map的过程通常包括以下步骤: 1. 创建一个XML解析器:使用`...

    JAXB与xml相互转换实例

    - **性能优化**:由于是编译时绑定,JAXB转换过程通常比运行时解析XML快。 - **易于维护**:当XML Schema更改时,只需要重新生成Java类,无需修改大量代码。 然而,JAXB也有一些局限性,例如不支持某些复杂的XML...

    利用jaxb实现xml和bean互转

    例如,一个Web服务可能接收XML请求,然后使用JAXB将其转换为Java对象进行处理,最后再将结果转换为XML响应。 **五、示例代码** ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; ...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

Global site tag (gtag.js) - Google Analytics