标签:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <书架> 3 <书> 4 <书名 name="vvvb">何茂赟自传</书名> 5 <作者>何茂赟</作者> 6 <售价>500.00</售价> 7 <售价>1234元</售价><售价>1234元</售价></书> 8 <书> 9 <书名>何茂赟自传2</书名> 10 <作者>何茂赟</作者> 11 <顾问>习大大和彭妈妈</顾问><售价>100.00元</售价> 12 </书> 13 </书架>
1 package dom4j; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.util.List; 7 8 import org.dom4j.Document; 9 import org.dom4j.DocumentException; 10 import org.dom4j.DocumentHelper; 11 import org.dom4j.Element; 12 import org.dom4j.io.OutputFormat; 13 import org.dom4j.io.SAXReader; 14 import org.dom4j.io.XMLWriter; 15 import org.junit.Test; 16 17 public class demo { 18 19 @Test 20 // 得到第二本书的书名:<书名>何茂赟自传2</书名> 21 public void read() throws DocumentException 22 { 23 //这两句程序根据手册写出,是固定的,目的是获取读取器 24 SAXReader reader = new SAXReader(); 25 Document document = reader.read(new File("src/dom4j/shu.xml")); 26 27 Element root=document.getRootElement();//得到xml的根节点(标签) 28 //注:“.getRootElement”是得到根节点,但是“.elements”是得到子节点(标签) 29 Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书> 30 String value=book.element("书名").getText();//得到根节点的子节点<书名>的内容 31 System.out.println(value); 32 33 } 34 @Test 35 // 得到第一本书的书名的属性:<书名 name="vvvb">何茂赟自传</书名> 36 public void readattr() throws DocumentException 37 { 38 //这两句程序根据手册写出,是固定的,目的是获取读取器 39 SAXReader reader = new SAXReader(); 40 Document document = reader.read(new File("src/dom4j/shu.xml")); 41 42 Element root=document.getRootElement();//得到xml的根节点 43 Element book=(Element) root.elements("书").get(0);//得到第一本书的根节点(标签):<书> 44 //注:“.attributeValue”是得到书签的属性,不是“getattribute”,与jaxp方式不同,要损手不同方法的各自api手册 45 String value=book.element("书名").attributeValue("name");//得到根节点的子节点<书名>的内容 46 System.out.println(value); 47 48 } 49 @Test 50 // 在第一本书里添加<售价>1234元</售价></书> (不指定位置) 51 public void add() throws DocumentException, Exception 52 { 53 //这两句程序根据手册写出,是固定的,目的是获取读取器 54 SAXReader reader = new SAXReader(); 55 Document document = reader.read(new File("src/dom4j/shu.xml")); 56 57 Element root=document.getRootElement();//得到xml的根节点 58 Element book=(Element) root.elements("书").get(0);//得到第一本书的根节点(标签):<书> 59 book.addElement("售价").setText("1234元");//在<书>的节点下面创建新的子节点(标签)<售价> 60 61 OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式 62 format.setEncoding("UTF-8");//格式设定为“UTF-8” 63 64 //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题, 65 //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出 66 XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" )); 67 writer.write( document ); 68 writer.close(); 69 } 70 @Test 71 // 在第二本书的指定位置添加<顾问>习大大</顾问> 72 public void add1() throws DocumentException, Exception 73 { 74 //这两句程序根据手册写出,是固定的,目的是获取读取器 75 SAXReader reader = new SAXReader(); 76 Document document = reader.read(new File("src/dom4j/shu.xml")); 77 78 Element root=document.getRootElement();//得到xml的根节点 79 Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书> 80 List list=book.elements();//按顺序得到所有的子节点(标签) (书名,作者,售价) 81 Element guwen=DocumentHelper.createElement("顾问");//创建出新的标签 82 guwen.setText("习大大"); 83 list.add(2, guwen); 84 85 86 OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式 87 format.setEncoding("UTF-8");//格式设定为“UTF-8” 88 89 //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题, 90 //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出 91 XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" )); 92 writer.write( document ); 93 writer.close(); 94 } 95 @Test 96 // 在第二本书的指定位置添加<顾问>习大大</顾问> 97 public void delect() throws DocumentException, Exception 98 { 99 //这两句程序根据手册写出,是固定的,目的是获取读取器 100 SAXReader reader = new SAXReader(); 101 Document document = reader.read(new File("src/dom4j/shu.xml")); 102 103 Element root=document.getRootElement();//得到xml的根节点 104 Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书> 105 Element guwen=book.element("顾问");//找到顾问标签 106 guwen.getParent().remove(guwen);//删除(先获取父节点) 107 108 OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式 109 format.setEncoding("UTF-8");//格式设定为“UTF-8” 110 111 //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题, 112 //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出 113 XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" )); 114 writer.write( document ); 115 writer.close(); 116 } 117 @Test 118 // 更改在指定位置的<顾问>习大大</顾问> 为 <顾问>习大大和彭妈妈</顾问> 119 public void update() throws DocumentException, Exception 120 { 121 //这两句程序根据手册写出,是固定的,目的是获取读取器 122 SAXReader reader = new SAXReader(); 123 Document document = reader.read(new File("src/dom4j/shu.xml")); 124 125 Element root=document.getRootElement();//得到xml的根节点 126 Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书> 127 Element guwen=book.element("顾问");//找到顾问标签 128 guwen.setText("习大大和彭妈妈"); 129 130 OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式 131 format.setEncoding("UTF-8");//格式设定为“UTF-8” 132 133 //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题, 134 //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出 135 XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" )); 136 writer.write( document ); 137 writer.close(); 138 } 139 }
dom4j解析,帮助文档很重要
标签:
原文地址:http://www.cnblogs.com/jjlovemm/p/4272106.html