dom4j(XML解析)私人学习笔记
来源:互联网 发布:网络运营公司简介 编辑:程序博客网 时间:2024/06/02 09:49
此笔记主要是dom4j-1.6版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。
一、基础知识:
1、xmlTool的功能是可以在java中操作xml文件。
使用SaxReader读取和操作xml文件,必须导入dom4j-1.6.1.jar
使用XPath的功能,必须导入 jaxen-1.1-beta-6.jar
2、xml文件顶部头说明:
<?xml version="1.0" encoding="UTF-8"?>
3、dom4j读取xml的方式大概分为两种:
(1)读取整个XML文件到内存中,在内存中维持DOM树,方便且可以使用xpath,但比较耗内存空间:
代码:
Document sa=new SAXReader().read("d:/data2.xml");
//获取根元素
Element root = sa.getRootElement();
(2)使用SAX来读取,特点是读一段解析一段,并不会把整个xml文件读取到内存中,节省内存空间。
代码:
// 创建一个解析器的实例
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
// 执行解析操作(PersonListHandler需要实现org.xml.sax.helpers.DefaultHandler接口)
PersonListHandler personListHandler = new PersonListHandler();
saxParser.parse("d:/data2.xml", personListHandler);
二、注意事项:
1、如果想使用特殊字符,需要进行转义:
< < 小于
> > 大于
& & 和号
' '省略号
" "引号
2、另一种防转义方式:<!CDATA[[数据]]>。xml解析器不会对<!CDATA[[数据]]>里面的数据进行解析,会直接原文输出 数据。
例如:<!CDATA[["我的个人数据<私密>"]]>,最终使用dom4j解析后输出为 "我的个人数据<私密>"
3、如果想用dom4j创建xml的文本内容加上<!CDATA[[数据]]>来转义,可以使用DocumentHelper.createCDATA()方法。
4、如果xml格式不正确,那么在使用dom4j解析时,会报错。
5、xml的元素也可以使用简短字符结束。例如 <person></person> 可以简写为 <person/>
6、使用dom4j创建xml文件时,会自动将相应的特殊字符进行转义,例如 DocumentHelper.createText("<小米>");最终输出 <小米>
7、使用dom4j创建xml时,默认创建的是 紧凑模式,可以使用OutputFormat来指定创建的模式:
OutputFormat.createPrettyPrint() :美观模式(易读)
OutputFormat.createCompactFormat() :紧凑模式(不易读但省空间)
8、被解析的xml文件必须含有有root根元素,如果xml文件一个元素都没有,那么解析时将会报错。
5、使用dom4j解析xml格式的字符串时,可以使用:
DocumentHelper.parseText(xmlStr);
或者使用:
Document result = null;
SAXReader reader = new SAXReader();
String encoding = getEncoding(text);
InputSource source = new InputSource(new StringReader(text));
source.setEncoding(encoding);
result = reader.read(source);
6、xml格式是非常严谨的,开头必须使用<?xml version='1.0' encoding='UTF-8'?> 来声明当前文件是xml文件,并且 <与? 之间不能有空格,否则dom4j不认为是个协议头,导致解析失败。
并且xml是必须由<标签></标签>组合,少了起始或结束标签都将解析失败,并且是严格区分大小写的,既<Root></root>是不匹配的。这两点特性与html语言不同,html语言是不严谨且比较
松散的语言,不区分大小写,且少了起始或结束标签照样会继续往下解析。
java代码使用示例:
package cn.itcast.d_xml_write;import java.io.FileOutputStream;import java.io.OutputStream;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter;import org.junit.Test;public class TestWriteXml1 {// 看一下DOM树中的节点对象@Testpublic void test2() throws Exception {// 解析XML文件,得到Document对象Document document = new SAXReader().read("d:/data.xml");// 根节点Element rootElement = document.getRootElement();System.out.println(rootElement);// 根节点下的子节点List<Element> children = rootElement.elements();for(Element child : children){System.out.println(child);}}// 写XML文件的HelloWorld(使用dom4j的工具类 --> DOM模型 --> xml文件)@Testpublic void test1() throws Exception {// --------------------------------------------------------------------// 【创建DOM树】// 创建一个新的Document对象Document document = DocumentHelper.createDocument();// 创建一个新的标签对象Element rootElement = DocumentHelper.createElement("person-list");// 把这个标签对象添加Document中,做为此document的根元素document.add(rootElement);// --------------------------------------------------------------------// 【把DOM树写成xml文件】// 写到xml文件中OutputStream out = new FileOutputStream("d:/data2.xml");XMLWriter xmlWriter = new XMLWriter(out);xmlWriter.write(document);xmlWriter.close();}}
- dom4j(XML解析)私人学习笔记
- [学习笔记]XML解析之DOM4J
- [学习笔记]XML解析之DOM4J
- DOM4J学习笔记 --- Java遍历解析XML
- java学习笔记:使用dom4j解析xml
- Dom4j解析XML笔记
- xml解析dom4j学习
- XML学习笔记 -- day03 Dom4J解析xml详解
- xml学习笔记—简单使用DOM4J解析xml
- android学习笔记18:Dom和Dom4j解析XML
- java xml解析 学习笔记(4)——DOM4J
- Java之DOM4J方式解析XML文件(学习笔记)
- 【学习笔记】JAVA之使用dom4j对xml文件解析
- 学习笔记-Java中的xml文件读取之DOM4J解析
- DOM4J学习笔记 --- Java简单解析XML数据
- Dom4j解析XML学习代码
- Dom4j解析XML学习之简单解析
- java使用dom4j解析xml的笔记
- ROS回调函数的类方法实现,both in Python 和 C++
- 【path-sum】
- Pointers on C——9 Strings, Characters, and Bytes.6
- 回音消除技术概述
- Mybatis + SqlServer 数据库操作insert 时获取当前主键值
- dom4j(XML解析)私人学习笔记
- Pointers on C——9 Strings, Characters, and Bytes.7
- Python内置类型性能分析
- redis config的配置
- js解析当前页面url获取参数
- Pointers on C——9 Strings, Characters, and Bytes.8
- 逆转?不会
- test
- David Silver《Reinforcement Learning》课程解读—— Lecture 5: Model-Free Control