开发者学堂课程【XML入门 :dom4j 的简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/861
dom4j 的简介
内容介绍
一、dom4j 概述
二、dom4j 使用
一、dom4j 概述
Dom4j 是一个组织,针对 xml 解析,提供解析器,dom4j 后来独立成一个公司,他的性能比 jdom 更加强大
二、dom4j 使用
Dom4j 不是 javase 的一部分,想要使用需要做到以下几步:
1. 第一步:
导入 dom4j 提供依赖接口
Dom4j 的 jar 包,包含所有的类和接口和相关操作
将 jar 包导入到项目中:
在项目中创建文件夹 lib,把 dom4j 的 jar 包直接粘贴入 lib
注意:现在 jar 包并未成功导入,需要做一步操作:
选中 jar 包->点击 Build Path->点击 Add to Build Path
执行完结果:
详细导入过程:
(1) 创建一个文件夹 lib
(2) 复制 jar 包到 lib 下面
(3) 右键点击 jar 包,build path -- add to buildpath
(4) 看到 jar 包,变成奶瓶样子,表示导入成功
2. 第二步:
选择 docs 文件夹,点击 index.html 文件
3.快速入门:
(1)解析 XML
Import java.net.URL;
import org.dom4j. Document;
Import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Foo {
public Document parse(URL url)
throws DocumentException {
SAXReader reader = new SAXReader () ;
Document document = reader.read (url);
//返回 document,更加方便
return document;
}
}
(2)迭代方式
public void bar(Document document)
throws DocumentException {
Element root = document.getRootElement () ;
//iterate through child elements of root
for ( Iterator i = root.elementiterator() ; i.hasNext(); ) {
Element element = (Element) i.next () ;
//do something
}
// iterate through child elements of root with element name "foo"
for ( iterator i = root.elementiterator( "foo”); i.hasNext(); ) {
Element foo =(Element) i.next();
//do something
}
//iterate through attributes of root
for ( iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute =(Attribute) i.next ();
// do something
}
}
(3)Xpath
public voidi bar (Document docunent) {
List list = document.selectNodes( "/ /foo/bas” ) ;
Node node = document.selectsingleNode
("//foo/bar/author");
string name = node .valueof( "@name" );
}
For example if you wish to find all the hypertext links in an XHTML document the following code would do the trick.
public void findLinks(Document document)
throws DocumentException {
List list = document.selectNodes ( " // a/Rhref" ) ;
for (Iterator iter = list.iterator() ; iter.hasNext (); ){
Attribute attribute =(Attribute) iter.next();
String url = attribute.getvalue() ;
}
}
(4)查看文档提供的方法:
点击 dom4j API-> 搜索 SAXReader 方法->选择构造方法
SAXReader ()
SAXReader (boolean validating)
SAXReader (DocumentFactorv factory)
SAXReader(DocumentFactory factory,boolean validating)
SAXReader (string xmnlReaderClassName)
SAXReader(Strinq xmlReaderClassName,boolean validating)
SAXReader (XMLReader xmlReader)
SAXReader(XMLReader xmlReader,boolean validating)
特点:创建一个 DOM4J 的事务,集成 SAX
点击 dom4j API->搜索 read 方法->选择构造方法
Doouent
①read(string systemId):
Reads a Document from the given URL or filename using SAX.
//document 的父接口是 Node,如果在 document 里面找不到想要的方法,到Node 里面去找
②document 方法
getRootElement() :获取根节点,返回的是 Element
点击 Element,Element 也是一个接口,node 也是 Element 的父接口
③Element 方法:
Element 和 Node 里面方法
getParent(): 获取父节点
addElement: 添加标签