XML解析
2019-05-10 / JAVA / 1122 次围观 / 0 次吐槽 /xml解析就是读写xml的意思
XML解析思想【重点】:
DOM解析:
将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象。
优点:因为,在内存中会形成dom树,可以对dom树进行增删改查。
缺点:dom树非常占内存,解析速度慢。
SAX解析
逐行读取,基于事件驱动
优点:不占内存,速度快
缺点:只能读取,不能回写(改数据)
XML常用的解析器
JAXP:
sun公司提供的解析。支持dom和sax。JAXP(Java API for XMLProcessing,意为XML处理的Java API),它提供解析和验证XML文档的能力。
JDOM:
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。
DOM4J:
dom for java
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术
DOM4J解析
DOM4J的SAX使用
根据文档来写
第一步:导入包
包下载: dom4j-1.6.1.zip
XPATH:
专门用于查询,它定义了一种规则。
使用的方法:
selectSingleNode():
selectNodes():
使用步骤:
1、注意:要导包 jaxen...jar
2、创建解析器SAXReader reader = new SAXReader();
3、解析xml 获得document对象 Document document = reader.read(url);
XPath规则:
// nodename 选取此节点。
/ 从根节点选取。
.. 选取当前节点的父节点。
@ 选取属性。
[@属性名] 属性过滤
[标签名] 子元素过滤
修改节点保存
public static void main(String[] args) throws Exception { SAXReader reader = new SAXReader(); Document doc = reader.read(new FileInputStream("xml/books.xml")); List list = doc.selectNodes("//书/@出版社"); for(Object o : list){ if(o instanceof Attribute){ Attribute att = (Attribute) o; att.setValue("美国"); } } XMLWriter writer = new XMLWriter(new FileOutputStream("xml/books.xml")); writer.write(doc); }
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.