dom4j解析xml

来源:互联网 发布:压力容器类别划分软件 编辑:程序博客网 时间:2024/06/06 17:12
import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.junit.Test;public class demo1 {/** * @param args * @throws Exception  */public static void main(String[] args) throws Exception {// TODO Auto-generated method stub}//读第 2 本书的信息 @Testpublic void read() throws Exception{ SAXReader reader = new SAXReader();     Document document = reader.read("src/book.xml");     Element book= (Element) document.getRootElement().elements("书").get(1);     String value=book.element("书名").getText();     String value2=book.element("书名").attributeValue("name");     System.out.println(value  +";"+value2);}//在第一本上添加一个新的售价@Testpublic void add() throws Exception{SAXReader reader=new SAXReader();Document document=reader.read(new File("src/book.xml"));Element book=document.getRootElement().element("书");book.addElement("售价").setText("111");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("gb2312");XMLWriter writer=new XMLWriter(new FileOutputStream("src/book.xml"), format);writer.write(document);writer.close();}//在第一本书指定位置上添加一个新的售价,更改List集合@Testpublic void add2() throws Exception{SAXReader reader=new SAXReader();Document document=reader.read(new File("src/book.xml"));Element book=document.getRootElement().element("书");List list=book.elements();//[书名,作者,售价]Element price=DocumentHelper.createElement("售价");price.setText("309元");list.add(2,price);OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("gb2312");XMLWriter writer=new XMLWriter(new FileOutputStream("src/book.xml"), format);writer.write(document);writer.close();}//删除上面的节点public void delete() throws Exception {SAXReader reader=new SAXReader();Document document=reader.read(new File("src/book.xml"));Element price=document.getRootElement().element("书").element("售价");price.getParent().remove(price);}//更新节点@Testpublic void update() throws Exception{SAXReader reader=new SAXReader();Document document=reader.read(new File("src/book.xml"));Element book=(Element) document.getRootElement().elements("书").get(1);book.element("作者").setText("张三");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("gb2312");XMLWriter writer=new XMLWriter(new FileOutputStream("src/book.xml"), format);writer.write(document);writer.close();}}


xpath

import java.io.File;import java.util.Iterator;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.junit.Test;public class demo2 {/** * @param args * @throws Exception  */public static void main(String[] args) throws Exception {// TODO Auto-generated method stub}@Testpublic void method() throws Exception{SAXReader reader=new SAXReader();Document document=reader.read(new File("src/book.xml"));String value=document.selectSingleNode("//作者").getText();//第一个值System.out.println(value);}}