1.Java中操作XML常见的几种方式
1.DOM
DOM(Document Object Model)文档对象模型是JAXP(Java API for XML Program)的一部分。Java DOM解析器负责解析XML文件并创建相应的DOM对象,这些DOM对象以树结构链接在一起。解析器将整个XML结构读入内存。
preson.xml
:
1 | 复制代码<?xml version="1.0" encoding="UTF-8" standalone="no"?><person> |
continents.xml
:
1 | 复制代码<?xml version="1.0" encoding="UTF-8"?> |
DOM
:
1 | 复制代码public class TestDOM { |
2.SAX
SAX(Simple API for XML)是DOM的替代方法,基于事件驱动解析XML。SAX只读。
SAX
:
1 | 复制代码public class TestSAX { |
hanlder
:
1 | 复制代码public class MyHandler extends DefaultHandler { |
因为SAX
是基于事件驱动的,所以它提供了几个事件处理器:EntityResolver
、DTDHandler
、ContentHandler
、ErrorHandler
。我们一般常用的是ContentHandler
和ErrorHandler
,ContentHandler
提供了解析XML时回调的方法,ErrorHandler
提供了解析出现异常时的处理方法。DefaultHandler
实现了这四个处理器,但真正的进行处理,类似于模板方法模式,交给子类来实现,因此我们一般会自定一个Handler
实现我们需要的方法即可。
3.JAXB
JAXB是可以把XML转为Java Object,也可以把Java Object转为XML,本身是由JDK提供的,在JAVA11之后需要引入jar包。
maven
:
1 | 复制代码<dependency> |
Java Object
:
1 | 复制代码@XmlRootElement(name = "book") //根标签 |
JAXB
:
1 | 复制代码public class TestJAXB { |
4.XStream
XStream是一种OXMapping技术,可以很方便的将Java Bean转为XML,反之亦然。
User
:
1 | 复制代码@XStreamAlias(value = "user") |
XStream
:
1 | 复制代码public class TestXstream { |
本文转载自: 掘金