XML解析技术--dom4j

本文介绍了如何使用DOM4J库进行XML操作,包括解析XML获取根节点、添加元素、在特定位置插入元素、修改节点值以及删除节点。通过示例详细阐述了每个操作的步骤,如查询person.xml中name标签的值,以及在p1标签后添加<sex>男</sex>等。
摘要由CSDN通过智能技术生成

使用dom4j解析xml时,首先导入dom4j提供的jar包。
得到document的方法:

SAXReader reader=new SAXReader();
Document document=reader.read(url);

其中document的父节点 Node,如果在document里找不到想要的方法可以去Node里找。
document里常用的方法:
getRootElement():获取根节点,返回的是Element。Element也是一个接口,父节点是Node。
Element和Node里的方法:
getParent():获取父节点; addElement:添加标签

获取标签的方法

 - element(qName):表示获取标签下面的第一个子标签。qName:标签名称。
 - elements(qName):获取标签下面是qName的所有子标签(一层)。qName:标签名称。
 - elements():获取标签下面的所有一层子标签。

使用dom4j实现查询操作
例如:查询person.xml标签name里所有的值。
步骤如下:
1.创建解析器
2.得到document
3.得到根节点
4.得到所有p1标签
5.得到name
6.得到name里的值


	private static void selectName() {
		//创建解析器
		SAXReader reader=new SAXReader();
		//得到document
		Document document=reader.read("src/person.xml");
		//得到根节点
		Element root=document.getRootElement();
		//得到p1
		List<Element> list=root.elements("p1");
		//遍历list
		for (Element element : list) {   //element是每一个list元素
			//得到p1下的name元素
			Element name1=element.element("name");
			//得到name里的值
			String s=name1.getText();
			System.out.println(s);			 
		}
}

将第一步创建解析器和第二步得到document,以及回写xml的步骤封装成方法,方便调用。
新建Dom4jUtils.java文件。

public class Dom4jUtils {
	public static final String PATH="src/person.xml";

	//创建解析器和返回document
	public static Document getDocument(String path){
		try{
			SAXReader reader=new SAXReader();
			//得到document
			Document document=reader.read(path);
			return document;
		}catch (Exception e){
			e.printStackTrace();
		}
		return null;
	}
//回写xml
	public static void xmlWriters(String path,Document document){
		try{
			OutputFormat format=OutputFormat.createPrettyPrint();	
			XmlWriter xmlWriter=new XMLEventWriter(new FileOutputStream(path,format));
			xmlWriter.write(document);
			xmlWriter.close();//关闭流
				}	catch(Exception e){
				e.printStackTrace();
		}
	}
}

使用dom4j实现添加操作
例如:在第一个< p1>标签后面添加一个元素< sex>男< /sex>。
步骤:
1.创建解析器
2.得到document
3.得到根节点
4.获取第一个p1
5.在p1下面添加元素
6.在添加完成之后的元素下添加文本
7.回写xml

	//实现添加操作,添加一个<sex>元素
	public static void addSex(){
		//得到document
		Document document=Dom4jUtils.getDocument(Dom4jUtils.PATH);
		//得到根节点
		Element root=document.getRootElement();
		//获取第一个p1
		Element p=root.element("p1");
		//在p1下添加元素
		Element sex1=p.addElement("sex");
		//在sex添加文本
		sex1.setText("男");
		//回写xml
			Dom4jUtils.xmlWriters(Dom4jUtils.PATH,document);
	}	
	

使用dom4j在特定位置实现添加操作

例如在第一个p1下面的age标签之前添加< school>edu< /school>
步骤:
1.创建解析器
2.得到document
3.得到根节点
4.获取第一个p1
5.获取p1下面的所有元素
6.在添加完成之后的元素下添加文本 ,age下标为1
7.回写xml

	//实现在特定位置的添加操作,添加一个<school>元素
	public static void addSchool(){
		//得到document
		Document document=Dom4jUtils.getDocument(Dom4jUtils.PATH);
		//得到根节点
		Element root=document.getRootElement();
		//获取第一个p1
		Element p=root.element("p1");
		//获取p1下面的所有元素
		List<Element> list=p.elements();
		//创建元素
		Element school=DocumentHandler.createElement("school");
		//在school下创建文本
		school.setText("edu");
		//在特定位置添加
		list.add(1,school);
		//回写xml
	Dom4jUtils.xmlWriters(Dom4jUtils.PATH,document);
	}

使用dom4j实现修改节点的操作
例如:修改第一个p1下age元素的值
步骤:
1.得到document
2.得到第一个p1元素
3.得到p1下的age
4.修改值为30
5.回写xml

public static void modifAge(){ 
	//修改节点age的值
	//得到document
	Document document=Dom4jUtils.getDocument(Dom4jUtils.PATH);
	//得到第一个根节点
	Element root=document.getRootElement();
	//得到第一个p1节点
	Element p=root.element("p1");
	//得到p1下的age
	Element age=p.element("age");
	//修改age的值
	age.setText("30");
	//回写xml
	Dom4jUtils.xmlWriters(Dom4jUtils.PATH,document);
	}

使用dom4j实现删除节点的操作
例如:删除第一个p1下的< school>节点
步骤:
1.得到document
2.得到根节点
3.得到第一个p1标签
4.得到p1下的school标签
5.删除
6.回写xml

	public static void del(){ 
	//**使用dom4j实现删除节点的操作**
		//得到document
		Document document=Dom4jUtils.getDocument(Dom4jUtils.PATH);
		//得到根节点
		Element root=document.getRootElement();
		//得到第一个p1
		Element p1=root.element("p1");
		//得到p1下的school标签
		Element school=p1.element("school");
		//删除
		p.remove(school);
		//回写xml
		Dom4jUtils.xmlWriters(Dom4jUtils.PATH, document);		
}

使用dom4j获得属性
为p1设定一个id=“aaa”,可以获取p1里面属性id的值。
步骤:
1.得到document
2.得到根节点
3.得到第一个p1元素
4.得到p1里的值

//获取属性
	public  static void getValue(){
		//得到document
		Document document=Dom4jUtils.getDocument(Dom4jUtils.PATH);
		//得到根节点
		Element root=document.getRootElement();
		//得到第一个p1
		Element p=root.element("p1");
		//得到p1里面的属性值,通过attributeValue
		String value=p1.attributeValue("id");   //参数是属性的名称
		System.out.println(value);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值