前端之家收集整理的这篇文章主要介绍了
xml中DOM4J的使用,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
xml中DOM4J的使用
使用
/** * @author 朱君鹏 * xml作用:以前发明被用来替代html,但是现在只是为了做软件的配置文件(用的最多),另外一个作用是作为一个小型的数据库 * xml语法:标签名以字母、数字、下划线组成,并且只能以字母或者下划线开头,标签名区分大小写 * xml属性:一个标签中可以有多个标签,但是可以有多个属性,但是属性名不能重复,并且属性值必须用单引号或者双引号包含,不使用引号是错误的写法 * xml文档声明:<?xml version="1.0" encoding="utf-8"?> 文档声明只要是为了解决中文乱码问题,尤其是使用记事本修改xml文档时一定要注意 * xml解析:解析的方式有两种,解析的含义是用程序去读取或者修改xml文件,解析分为两种方式:分别是DOM、SAX,这两种解析的原理是完全不 * 一样的,其中DOM解析的原理是:一次性将xml文档加载进内存形成Document树,通过Document得到节点对象,通过节点对象得到xml文档中的信息 * DOM原理之下有一些功能工具供程序员使用,最常用的是DOM4J,民间开源组织提供 * 操作分别包含下面的内容: * 遍历xml,遍历之前需要明白下面的内容 * 首先整个xml文件读进内存之后形成了一颗树,并且树的树根只有一个,通过getRootElement获取其根元素 * (代表xml文件中的标签体,也就是被开闭标签包含的文本内容)、Attribute(属性,通过它可以获得xml文件中的属性) * 这样就组成了一个xml文档在内存中的Document对象树,分别对应的包为org.dom4j.Node、org.dom4j.Attribute、org.dom4j.Text、 * org.dom4j.Element,通过Document对象树可以得到其中的节点,通过节点又可以获取其中的节点信息,节点包括:节点类型、节点名称 * */
package com.jpzhutech.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class TestDom4J {
public static void main(String[] args) {
System.out.println(readDocument().getName());
System.out.println(getRoot(readDocument()).getName());
System.out.println(getRoot(readDocument()).getText());
}
public static Document readDocument(){
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File("./src/contact.xml"));
} catch (DocumentException e) {
throw new RuntimeException(e);
}
return document;
}
public static Element getRoot(Document document){
return document.getRootElement();
}
@Test
public void test1(){
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File("./src/contact.xml"));
} catch (DocumentException e) {
throw new RuntimeException(e);
}
Iterator<Node> it = document.nodeIterator();
while(it.hasNext()){
Node node = it.next();
String name = node.getName();
System.out.println(name);
if(node instanceof Element){
Element element = (Element)node;
Iterator<Node> it1 = element.nodeIterator();
while(it1.hasNext()){
Node node1 = it1.next();
System.out.println(node1.getName());
}
}
}
}
@Test
public void test2(){
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File("./src/contact.xml"));
} catch (DocumentException e) {
throw new RuntimeException(e);
}
getChildElement(document.getRootElement());
}
public void getChildElement(Element element){
System.out.println(element.getName());
List<Attribute> attribute = element.attributes();
for(Attribute attr : attribute){
System.out.println(attr.getName()+"="+attr.getValue());
}
String content = element.getText();
System.out.println(content);
List<Element> list = element.elements();
for(Element li : list){
getChildElement(li);
}
}
}
参考资料
http://www.jpzhutech.com