dom4j使用

    最近在做的项目内容是接入多个第三方接口,有些第三方接口做的比较早,数据的传输还是xml格式,自然需要对xml文件进行读写,这篇博客准备总结一下xml文件读写相关的内容,语言依旧是java。

    

    对于任何一个文件,都有编码格式,xml文件也不例外;而对于任何一个第三方插件,也会有版本号,xml文件同样也存在。所以,xml文件第一行一般都是这个样子"<?xml version="1.0" encoding="UTF-8"?>"

    交代完了共性,下面就是xml文件本身的内容了。xml文件类似多叉树,有且只有一个根节点,每个节点有自己的属性和子节点。

    

    对于一款插件来说,自然要提供对以上元素的CRUD(增删改查)操作,对于每一个操作,可能需要提供多种方式来完成相应的需求。

    这篇博客,想实现基础的功能,一些复杂的功能,会在另外一篇博客进行介绍。

    想实现以下一些功能:

    1.能够读写项目的某个xml文件

扫描二维码关注公众号,回复: 361819 查看本文章

    2.能够获取某个节点,进行CURD操作

    3.能够获取节点的某个属性,进行CURD操作

以下是一个xml文件,使用dom4j进行解析

<?xml version="1.0" encoding="UTF-8"?>
<company name="名称">
	<department id="1" name="武力部">
		攻城略地
		<person name="常遇春">第一猛人</person>
	</department>
	<department id="2" name="行政部">忽悠人
		<person name="朱元璋">大boss</person>
	</department>
</company>

    

package dom4j;

import java.io.File;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 
 * explaintion dom4j简单使用
 * 2016年7月4日 下午6:47:59
 */
public class ReadXml {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws Exception {
		//插件提供用于读写的类
		SAXReader reader = new SAXReader();
		//java io操作
		File file = new File("source/company.xml");
		//文档类
		Document document = reader.read(file);
		//根据一个文档对象获取根节点
		Element root = document.getRootElement();
		String name = root.getName();
		//获取节点的名称
		System.out.println("节点名称是:"+name);
		
		//以下是对于节点属性的CURD
		//获取节点指定属性名的值
		String attrbuteValue = root.attributeValue("name");
		System.out.println("节点属性名name的值:"+attrbuteValue);
		//增加节点的属性
		root.addAttribute("year", "1");
		Attribute attribute = root.attribute("year");
		//删除节点的属性,只能通过这种方式删除,Attribute需要通过节点以及属性名称拿到
		root.remove(attribute);
		
		//获取节点的文本内容
		String textValue = root.getTextTrim();
		System.out.println("节点的文本内容:"+textValue);
		
		//返回子节点中第一个名为department的节点
		Element element = root.element("department");
		System.out.println(element.attributeValue("name"));
		//对于节点的所有子节点,可以进行如下遍历
		List<Element> elements = root.elements("department");
		for(Element el:elements){
			System.out.println(el.attributeValue("name"));
		}
		
		//删除某个节点
		root.remove(element);
	}

猜你喜欢

转载自4876391520.iteye.com/blog/2309118