当前位置: 首页 > 工具软件 > dom4j > 使用案例 >

dom4j及案例

匡凌
2023-12-01

dom4j是一个组织,针对xml解析,提供解析器dom4j

             步骤

1、导入dom4j的jar包

创建文件夹lib,复制jar包到lib下面,右键点击jar:build path-add to buildpath

2、得到document

  SAXReader reader = new SAXReader();

  Document d = reader.read(url);

document里面的方法:getRootElement():获取根节点,返回Element

Element接口里面的方法:getParent()、addElement()

         1、使用dom4j查询xml

 查询所有name元素里面的值

a、创建解析器  SAXReader reader = new SAXReader()

b、得到document  Document d = reader.read(url)

c、得到根节点  getRootElement(),返回Element

d、得到p1标签

  elements(“p1”):获取每个标签下面的第一个首标签,返回list集合

 遍历list得到每一个p1

e、得到name   执行element(qname):获取标签下面的第一个子标签,返回Element

f、获取name元素里面的值  getText

g、打印出f步骤

   2、使用dom4j创建节点

a、创建解析器

b、得到docuemtn

c、得到根节点

d、得到第一个p1  使用element方法

e、在p1下面添加元素  addElement(“标签名称”),返回Element

f、添加文本  setText(“文本内容”)

g、回写xml   XMLWriter xml = new XMLWriter(OutputStrem,OutputFormat)

  OutputStrem :xml文件路径:new FileOutPutStream(“文件路径”)

  OutputFormat格式化的值,使用createPretttyPrint方法

h、把文件添加进XMLWriter  write

i、关闭XMLWriter  close

   3、在指定位置添加节点

a、创建解析器

b、得到docuemtn

c、得到根节点

d、得到第一个p1  使用element方法

e、获取p1下面的所有元素  elements方法,返回list集合,使用list的方法,在指定位置添加元素  add(int index,E element)

f、创建要添加的元素  documentHelper.createElement

g、创建文本

h、回写xml 

i、把文件添加进XMLWriter 

l、关闭XMLWriter 

 

  对得到document的操作和回写xml的操作,封装成方法;把传递的文件路径封装成一个常量

好处:提高开发速度,可以提高代码可维护性

 

     4、修改节点的值

a、得到document

b、得到根节点,然后得到第一个p1标签

c、得到p1下面的标签

d、修改标签的值      setText

e、回写xml

   5、删除节点

a、得到document

b、得到根节点

c、得到第一个p1标签

d、得到p1标签下面的标签

e、使用p1标签删除d  remove

f、回写xml

  6、使用dom4j获取属性的操作

a、得到document

b、得到根节点

c、得到第一个p1标签

d、得到p1里面的属性值  attributeValue

  

package cn.idcast1;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import cn.idcast2.Dom4jUtils;

public class Dom4jTest {
	public static void main(String[] args) throws Exception {
		// selectAll();
		// selectFirst();
		// selectSecond();
		// add();
		// addschool();
		// modify();
		// remove();
		getValue();
	}

	// 获取属性值的操作
	public static void getValue() {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root = d.getRootElement();
		Element p1 = root.element("p1");
		String s = p1.attributeValue("id");
		System.out.println(s);
	}

	// 删除节点
	public static void remove() {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root = d.getRootElement();
		Element p1 = root.element("p1");
		Element sch = p1.element("school");
		p1.remove(sch);
		Dom4jUtils.xmlwriters(Dom4jUtils.URL, d);
	}

	// 修改节点的值
	public static void modify() {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root = d.getRootElement();
		Element p1 = root.element("p1");
		Element name1 = p1.element("name");
		name1.setText("张三");
		Dom4jUtils.xmlwriters(Dom4jUtils.URL, d);
	}

	// 在指定位置添加节点
	public static void addschool() throws Exception {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root = d.getRootElement();
		Element p1 = root.element("p1");
		List<Element> list = p1.elements();
		Element school = DocumentHelper.createElement("school");
		school.setText("jinshan");
		list.add(1, school);
		Dom4jUtils.xmlwriters(Dom4jUtils.URL, d);
	}

	// 创建节点
	public static void add() throws Exception {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root = d.getRootElement();
		Element p1 = root.element("p1");
		Element sex = p1.addElement("sex");
		sex.setText("nv");
		Dom4jUtils.xmlwriters(Dom4jUtils.URL, d);
	}

	// 得到第二个name元素里面的值 因为element方法表示的是得到第一个标签的值
	public static void selectSecond() throws Exception {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root1 = d.getRootElement();
		List<Element> list = root1.elements("p1");
		Element index = list.get(1);
		Element name1 = index.element("name");
		String s = name1.getText();
		System.out.println(s);

	}

	// 得到第一个name元素里面的值
	public static void selectFirst() throws Exception {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element root1 = d.getRootElement();
		Element p1 = root1.element("p1");
		Element name1 = p1.element("name");
		String s = name1.getText();
		System.out.println(s);
	}

	// 得到所有的name元素里面的值
	public static void selectAll() throws Exception {
		Document d = Dom4jUtils.getDocuments(Dom4jUtils.URL);
		Element e = d.getRootElement();
		List<Element> l = e.elements();
		for (Element element : l) {
			Element e2 = element.element("name");
			String s = e2.getText();
			System.out.println(s);
		}

	}
}

  封装方法

package cn.idcast2;

import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jUtils {
	// 封装文件的地址,因为是常量,所有URL要大写
	public static final String URL = "src/2.xml";

	// 封装文件,返回Document
	public static Document getDocuments(String url) {
		try {
			SAXReader sax = new SAXReader();
			Document d = sax.read(url);
			return d;
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 封装回写的xml
	public static void xmlwriters(String url, Document d) {
		try {
			XMLWriter xmlw = new XMLWriter(new FileOutputStream(url),
					OutputFormat.createPrettyPrint());
			xmlw.write(d);
			xmlw.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

  

转载于:https://www.cnblogs.com/zengjiao/p/7225671.html

 类似资料: