项目开发中,经常要用到生成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>
具体的细节就不用说了吧?大家应该一看就明白的
然后是生成对应的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
|
相关推荐
jaxb解析生成xml例子
教你使用jaxb解析xml,介绍了主要的注解,以及核心api
JAXB教程 JAXB JAXB插件 里面有很详细的使用说明,看了就知道,JAXB解析XML真的很好用
使用woodstax+jaxb进行xml的流解析,包括解析类,解析文件,所需jar包,带注解的实体类。提高了解析效率,减少了内存消耗。
使用jaxb生成XML例子,含有例子和注解解析
NULL 博文链接:https://weareold.iteye.com/blog/708543
JAVA JAXB 解析XML嵌套子节点为字符串
Java 解析XML性能分析Demo。包含了DOM解析,SAX解析, JDOM解析,DOM4J解析,JAXB解析例子。
NULL 博文链接:https://xiongpan0807.iteye.com/blog/1832124
JAXB解析XML真的很好用,很强大,而且还是JDK自带的,今天自己总结了一个DEMO,自已感觉非常棒,哈哈。。。里面还有JAXB插件,可以自动生成JAVA BEAN,哈哈,当然了賠本的买卖咱不干,那就请需要的宝贝们奉獻点分吧...
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项...从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
JDK 自带JAXB 注解解析xml
解释并解决java开发中使用jaxb解析或组装xml遇到乱码的问题。
在android 6.0下,应用JAXB jar包根据XML Schema解析XML文件。
dom4j-2.1.0.jar sax2r2.jar jaxb-api-2.2.jar 解析XML的三种jar包
网上找了一堆可以编译却不能运行的,这个是可以编译可以运行的。
NULL 博文链接:https://ganliang13.iteye.com/blog/1146685
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。主要功能是生成XML文件和解析XML文件。
NULL 博文链接:https://ladybird2010.iteye.com/blog/675217