dom4j解析XML常用方法

基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//读取xml
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
// 获取根节点
Element root = document.getRootElement();
// 获取孩子节点
Iterator<Element> it1 = root.elementIterator();
// 获取属性
Iterator<Attribute> attributes = ele.attributeIterator();
/*
以上两个获取孩子节点和属性都是获取迭代器, 通过it.hasnext()方法可以遍历得到所有的节点和属性.
*/
// 获取节点名
ele.getName()
// 获取节点值
ele.getText()
// 获取属性名
ele.getBName
// 获取属性值
ele.getValue()
// 设置文本
ele.setText("张三");
//设置属性
ele.addAttribute("show", "yes");
//添加注释
ele.addComment("This is a test for dom4j ")
// 删除子节点
ele.remove(element);

创建XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class CreateXML {
public static void main(String[] args) throws Exception {
// 创建文档对象
Document document = DocumentHelper.createDocument();

// 创建根节点
Element root = document.addElement("root");

// 添加节点信息
Element auther1 = root.addElement("auther")
.addAttribute("name", "Tom") // 属性
.addAttribute("loation", "UK")
.addText("Tom Wang"); // 节点内容

Element auther2 = root.addElement("auther")
.addAttribute("name", "Ted")
.addAttribute("loation", "USA")
.addText("Ted Chen");

// 输出到xml文件
FileWriter out = new FileWriter("src/new.xml");
document.write(out);
out.close();
}
}

输出的内容为

1
2
3
4
5
6
<!--new.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<root>
<auther name="Tom" loation="UK">Tom Wang</auther>
<auther name="Ted" loation="USA">Ted Chen</auther>
</root>

修改XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 创建xml解析器对象reader
SAXReader reader = new SAXReader();
// 加载xml文件, 获取document对象
Document document = reader.read("src/test_xml/first.xml");
//选定节点属性集 xpath写法
List arrList = document.selectNodes("/books/book/@show")
Iterator arrIter = arrList.iterator();

//选定节点集
List list = document.selectNodes("/books/book/title")
Iterator texIter = list.iterator();
//修改节点属性
while (arrIter.hasNext()) {
Attribute attribute = (Attribute) iter.next();
if (attribute.getValue().equals("yes"))
attribute.setValue("no");
}
//修改节点文本内容
while (texIter.hasNext()) {
Element element = (Element) iter.next();
element.setText("xxx")
}

字符串转XML

1
2
String text = "<members> <member>sitinspring</member> </members>";      
Document document = DocumentHelper.parseText(text);

XML转字符串

1
2
3
4
5
6
// 创建xml解析器对象reader
SAXReader reader = new SAXReader();
// 加载xml文件, 获取document对象
Document document = reader.read("src/test_xml/first.xml");
//xml转换成字符串
String memberXmlText=document.asXML();

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%