本文介绍使用dom4j来处理XML。
一:使用maven引入依赖jar包
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
二:解析XML
思路:解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作。获取Document对象方式:
1.自己创建Document
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
其中root是根节点,可以继续添加其他节点等操作。
2.读取xml类型文本内容获取Document对象
String content = "<root>xxxxxxxxx</root>";
Document document = DocumentHelper.parseText(content);
3.读取XML文件获取Document对象
//创建SAXReader对象
SAXReader saxReader = new SAXReader();
//获取Document对象
Document read = saxReader.read(new File("xml文件路径"));
三:遍历节点的内容和属性,并放置到Map里面(注意:不支持有重复便签的xml,因为map唯一性的key值)
//遍历当前节点下的所有节点
public void getNodes(HashMap<String, String> map,Element node){
System.out.println("当前节点的名称:" + node.getName());
map.put(node.getName(), node.getTextTrim());
//首先获取当前节点的所有属性节点
List<Attribute> attributes = node.attributes();
//遍历属性节点
for(Attribute attribute : attributes){
System.out.println("属性"+attribute.getName() +":" + attribute.getValue());
map.put(attribute.getName(), attribute.getValue());
}
//如果当前节点内容不为空,则输出
if(!(node.getTextTrim().equals(""))){
System.out.println( node.getName() + ":" + node.getText());
map.put(node.getName(), node.getText());
}
//同时迭代当前节点下面的所有子节点
//使用递归
Iterator<Element> iterator = node.elementIterator();
while(iterator.hasNext()){
Element e = iterator.next();
getNodes(map,e);
}
}
四:增加新节点一节属性和内容(具体可以查dom4j的文档)
Element user = root.addElement("teacher");
user.addAttribute("id", "No1");
user.setText("教师一");
五:保存XML
XMLWriter writer = new XMLWriter(new FileWriter(new File("e:\\teach.xml")));
writer.write(document);
writer.close();