java对xml操作_java对XML文件的相关操作(dom4j)

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4

5 tester1

6

7

8 tester29

10

11

12

13

14 hello world!

15

16

17 don‘t use in this way!!!

18

19

上面就是XML文件的内容。

生成XML文件的相关代码

1   public voidcreate(){2 //创建根节点 root

3 Element root = DocumentHelper.createElement("Person");4 Document document =DocumentHelper.createDocument(root);5

6 //addAttribute 是指创建节点内的属性7 //: 其中university和location就是Person的属性。

8 root.addAttribute("university","SCAU");9 root.addAttribute("location","GuangZhou");10

11 //创建节点的方式。12 //而整个的dom树其实就是这么延伸下去的:将root看成一个节点,节点再添加节点(取数据的时候,套多个for循环就可以了)

13 Element e1 = root.addElement("student");14 e1.addElement("name").addText("tester1");15

16 //以这种方式添加节点的话,内容是这样子的:xiangxiao17 //有点类似 HTML 的 标签。18 //这么说,通过这种方式来添加节点的话,多数是以添加 attribute 为目的的

19 Element e2 = root.addElement("student");20 e2.addElement("name");21 e2.addText("tester2");22

23 //比如像下面这样

24 Element e3 = root.addElement("student");25 Element ei = e3.addElement("input");26 ei.addAttribute("type","text");27 ei.addAttribute("value","forTest");28

29 //下面这种添加节点的方式该是比较好理解的,

30 Element e4 = root.addElement("student");31 Element ex = e4.addElement("name");32 ex.addText("hello world!");33

34 //当然,也可以写下面这种一锅端的方式:

35 Element DONT_USE = root.addElement("student");36 DONT_USE.addElement("DONT").addAttribute("att1","value1").addAttribute("att2","value2").addText("don‘t use in this way!!!");37

38 OutputFormat format = new OutputFormat(" ",true);// 输出的格式,四个空格加换行,好像是约定俗称的吧39 format.setEncoding("UTF8");40 try{41 XMLWriter writer = new XMLWriter(new FileOutputStream("Person.xml"),format);42 writer.write(document);43 writer.close();44 } catch(Exception e){45 e.printStackTrace();46 }47 }

从XML文件取出数据

一:

1 /**

2 * 获取节点的方式一3 * 这种方式虽然看起来简单,但另一个方法更好理解一些4 */

5 public voidget(String filePath){6 try{7 File xmlFile = newFile(filePath);8 SAXReader saxReader = newSAXReader();9

10 Document document =saxReader.read(xmlFile);11 //获取根节点

12 Element Person =document.getRootElement();13

14 //获取根节点的直接子节点

15 for(Iterator i =Person.elementIterator();i.hasNext();){16 //...

17 Element student =(Element)i.next();18 for(Iterator j =student.elementIterator();j.hasNext();){19 //子节点的直接子节点:...

20 Element node =(Element)j.next();21 //获取节点的名字与内容:name:xiaoxiang

22 System.out.print(node.getName()+" : "+node.getTextTrim());23 }24 System.out.println();25 }26 } catch(Exception e){27 e.printStackTrace();28 }29 }

二:

1 /**

2 * 获取节点的方式二3 * 根据父节点直接获取所有的子节点,同时也能获取该节点的所有属性4 */

5 public voidanotherGet(String filePath){6 try{7 File xml = newFile(filePath);8 SAXReader saxReader = newSAXReader();9

10 Document document =saxReader.read(xml);11 Element Person =document.getRootElement();12

13 //获取节点 person 的所有属性14 //以键值对的形式打印

15 List attrList =Person.attributes();16 System.out.printf("this is attribute: \n");17 for (int i = 0; i < attrList.size(); i++) {18 Attribute item =(Attribute)attrList.get(i);19 System.out.println(item.getName()+ " : "+item.getValue());20 }21

22 //获取节点 person 的所有子节点23 //在这个具体的例子中,就是 、..

24 List nodeList =Person.elements();25 System.out.printf("this is element: \n");26 for (int i = 0; i < nodeList.size(); i++) {27 Element student =(Element)nodeList.get(i);28 //获取节点 node 的所有子节点

29 List contentList =student.elements();30 for (int j = 0; j < contentList.size(); j++) {31 Element contentNode =(Element)contentList.get(j);32 System.out.println(contentNode.getName()+" : "+contentNode.getTextTrim());33 }34 }35

36 //根据dom树的结构,决定循环的次数。37 //一般是两层循环;当然也有可能更多,主要取决于一开始的设计。

38 } catch(Exception e) {39 e.printStackTrace();40 }41 }

利用DOM4J对XML文件的基本操作大概就这么多,反正也不外乎读跟写嘛。

相关的 API (好像很久没更新的样子):http://www.oschina.net/uploads/doc/dom4j-1.6.1/index.html

maven的引用:

dom4j

dom4j

1.6.1

在具体的编程中,import 进的外部包有 (因为可能会与其他的包重叠,所以也顺带写一下吧):

import org.dom4j.*;

import org.dom4j.io*;

第一次用博客园写代码,用的好不习惯……

2017.8.7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值