xml文档解析之dom4j_01

	dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点(*百度百科).*
	使用java解析xml时需要导入jar包(官网地址https://dom4j.github.io/),这里使用dom4j-1.6.1.jar作为介绍案例.

xml案例文件

xml文件名为 book.xml,内容为:

<?xml version="1.0" encoding="UTF-8"?>
	<书架>
			<书 出版社="中华出版社">
						<书名>西游记</书名>
						<作者>吴承恩</作者>
			</书>
			<书 作者="施耐庵">
						<书名 创作年代="元末明初">水浒传</书名>
						《水浒传》主要描写的是北宋末年,以宋江为首的一百零八条好汉在山东梁山泊聚义的故事。
			</书>
	</书架> 

1.解析xml文档

        SAXReader reader = new SAXReader();
	    Document document = reader.read("book.xml");  

2.获取根节点(<书架>节点)

       Element root = document.getRootElement();

3.获取<书架>下的<书>全部节点

       List<Element> book = root.elements("书");

4.获取<书>的第二个节点

		Element book2 = book.get(1);

5.节点的增删改查操作

1. 查节点的内容和参数

1)获取节点名称

获取<书>的父节点

 book2.getParent();
2)获取标签体内容

只打印标签体的内容,如果没有标签体,返回空

  //<书>节点的标签体内容
  String text1 = book2.getText();
  System.out.println(text1);
	 //《水浒传》主要描写的是北宋末年,以宋江为首的一百零八条好汉在山东梁山泊聚义的故事.
	 
 //<书名>节点的标签体内容
   String text2 = book2.element("书名").getText();//推荐使用
   或者String text2 = book2.elementText("书名");
  System.out.println(text2);
   //水浒传     
3)获取标签体参数
   Attribute attribute = book2.attribute("作者");
   String name =  attribute.getName();//作者
   String value = attribute.getValue();//施耐庵

3. 增节点的内容和属性

1)增加节点
 	//创建一个新的<主角>节点
	Element role = DocumentHelper.createElement("主角");
2)增加节点标签体
	role.setText("武松");
3)将新的<主角>节点挂到第二个<书>节点上
	book2.add(role);
4)增加节点属性
//获取要增加属性的节点
Element role = book2.element("主角");
//创建一个属性  年龄="20"
Attribute attribute = DocumentHelper.createAttribute(role, "年龄", "20");
//将属性挂到节点上
role.add(attribute);		

4. 删节点的内容和参数

1)删除节点
    //删除<主角>节点
	Element role = book2.element("主角");
	book2.remove(role);
2)删除节点标签体
	//获取要移除的节点
	Element name = book2.element("书名");
	//设置标签体为空
	name.setText("");
3)删除节点参数
	Element name = book2.element("书名");
	Attribute attribute = name.attribute("创作年代");//或者指定移除的第几个属性,从0开始
	name.remove(attribute);

6.将内存中的内容写出到文件中

//调整格式用
OutputFormat createPrettyPrint = OutputFormat.createPrettyPrint();
//写出文件
XMLWriter writer = new XMLWriter(new FileOutputStream("book.xmll"),createPrettyPrint);
writer.write(document);
writer.flush();
writer.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值