1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 2.3 使用 dom4j 对 xml文件进行 dom 解析

2.3 使用 dom4j 对 xml文件进行 dom 解析

时间:2022-03-09 14:27:18

相关推荐

2.3 使用 dom4j 对 xml文件进行 dom 解析

1 // 使用dom4j对XML文档进行解析 CRUD 2 public class Demo1 { 3 4//读取XML文档中第二本书的书名 <书名>javaWEB</书名> 5@Test 6public void read() throws Exception { 7 SAXReader reader = new SAXReader(); 8 Document document = reader.read("src/book.xml"); 910 //拿到第二本书这个标签 11 Element secondBook = (Element) document.getRootElement().elements("书").get(1); 1213 //拿到书名 14 String bookName = secondBook.element("书名").getText(); //element 不带s 默认取第一个节点 15// String bookName = secondBook.elementText("书名");也可以这样写 1617 //拿到属性值 18 String value = secondBook.element("书名").attributeValue("name"); 1920 System.out.println(bookName + value); 21} 2223//在第一本书添加标签<售价>49.00元</售价> 24@Test 25public void add() throws Exception { 26 SAXReader reader = new SAXReader(); 27 Document document = reader.read("src/book.xml"); 2829 //拿到第一本书 30 Element book = document.getRootElement().element("书"); 3132 //添加标签 33 book.addElement("售价").setText("49.00元"); 3435 //更新XML文档 36 //为了避免乱码问题 设置格式化输出器 37 OutputFormat format = OutputFormat.createPrettyPrint(); 38 format.setEncoding("UTF-8"); 3940 //注意 如果用字节流 如:FileOutputStream,则只能依靠write去查码表 就可以设置输出的码表 41 //如果 用的是字符流 如:FileWriter 则调用write方法写document时 不会去查码表,而是这个字符流自己去查码表 默认查的是 gb2312 42 //所以 一般采用字节流,然后指定输出的码表 43 XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format); 44 write.write(document); 45 write.close(); 4647} 48//在第一本书 指定位置上 添加标签<售价>49.00元</售价> 49@Test 50public void add2() throws Exception { 51 SAXReader reader = new SAXReader(); 52 Document document = reader.read("src/book.xml"); 5354 Element book = document.getRootElement().element("书"); 5556 //dom4j在指定位置插入一个标签 要在List集合中完成 ,把指定的需添加的标签放到List集合中的指定位置,后面的标签 会自动往后排 57 List list = book.elements(); 58 Element newElemenrt = DocumentHelper.createElement("售价"); 59 newElemenrt.setText("49.00元"); 60 list.add(1,newElemenrt); 6162 OutputFormat format = OutputFormat.createPrettyPrint(); 63 format.setEncoding("UTF-8"); 64 XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format); 65 write.write(document); 66 write.close(); 67} 6869//删除上面添加的售价节点(删除第一个出现的售价节点) 70@Test 71public void delete() throws Exception { 72 SAXReader reader = new SAXReader(); 73 Document document = reader.read("src/book.xml"); 7475 Element element = document.getRootElement().element("书").element("售价"); 76 element.getParent().remove(element); 7778 OutputFormat format = OutputFormat.createPrettyPrint(); 79 format.setEncoding("UTF-8"); 80 XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format); 81 write.write(document); 82 write.close(); 83} 8485//更新第二本书的作者 86@Test 87public void update() throws Exception { 8889 SAXReader reader = new SAXReader(); 90 Document document = reader.read("src/book.xml"); 9192 Element book2 = (Element) document.getRootElement().elements("书").get(1); 93 book2.element("作者").setText("徐泽昆"); 9495 OutputFormat format = OutputFormat.createPrettyPrint(); 96 format.setEncoding("UTF-8"); 97 XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format); 98 write.write(document); 99 write.close();100}101 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。