项目开发中,经常要用到生成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();
}
}
是不是很简单的呢?还不赶快来试试……
附表:JAXB中XML数据类型和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 |
本文介绍如何使用JDK自带的JAXB工具快速解析XML文件。通过定义XML格式并生成对应的Java bean对象,可以轻松读取XML数据。此外,还提供了XML数据类型与Java数据类型的映射表。
1409

被折叠的 条评论
为什么被折叠?



