Dom4j 封装DOM的解析XML文件的方法:
1 List<Book> bookList=new ArrayList<Book>(); 2 //1.1 建立一个解析器工厂: 3 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 4 //1.2 获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器 5 DocumentBuilder db = dbf.newDocumentBuilder(); 6 //1.3 将xml文件加载到内存中,得到表示整个文档的Document对象 7 InputStream inStream=DomParser.class.getClassLoader().getResourceAsStream("book.xml"); 8 org.w3c.dom.Document w3cdoc=db.parse(inStream); 9 //2.创建一个DOMReader 10 DOMReader domReader=new DOMReader(); 11 //3.将org.w3c.dom.Document转成org.dom4j.Document 12 org.dom4j.Document doc=domReader.read(w3cdoc); 13 Element ele=doc.getRootElement();//3.获得根节点 14 //4.使用迭代器对子节点进行迭代 15 Iterator<Element> it=ele.elementIterator(); 16 while(it.hasNext()){ 17 Book book=new Book(); 18 Element bookEle=it.next();//取出当前的迭代的元素 19 book.setId(bookEle.attributeValue("id"));//attributeValue:根据属性名获得属性值 20 book.setName(bookEle.element("name").getText()); 21 book.setAuthor(bookEle.elementText("author")); 22 bookList.add(book);
Dom4j 封装SAX的解析XML文件的方法:
1 List<Book> bookList=new ArrayList<Book>(); 2 InputStream inStream=DomParser.class.getClassLoader().getResourceAsStream("book.xml"); 3 SAXReader saxReader=new SAXReader();//1. 创建sax解析器 4 org.dom4j.Document doc=saxReader.read(inStream);//2. 获得org.dom4j.Document文档对象 5 Element ele=doc.getRootElement();//3.获得根节点 6 //4.使用迭代器对子节点进行迭代 7 Iterator<Element> it=ele.elementIterator(); 8 while(it.hasNext()){ 9 Book book=new Book(); 10 Element bookEle=it.next();//取出当前的迭代的元素 11 book.setId(bookEle.attributeValue("id"));//attributeValue:根据属性名获得属性值 12 book.setName(bookEle.element("name").getText()); 13 book.setAuthor(bookEle.elementText("author")); 14 bookList.add(book);
Dom4j 生成XML文件
1 import java.io.FileWriter; 2 3 import org.dom4j.Document; 4 import org.dom4j.DocumentHelper; 5 import org.dom4j.Element; 6 import org.dom4j.io.OutputFormat; 7 import org.dom4j.io.XMLWriter; 8 /** 9 * dom4j 10 * @author bwf 11 * 12 */ 13 public class TestDom4j2 { 14 public static void main(String[] args) throws Exception { 15 16 //创建Document 17 Document dom=DocumentHelper.createDocument(); 18 //创建根节点 19 Element root=dom.addElement("我爱吃水果"); 20 //创建元素,并附加属性 21 Element item1=root.addElement("水果").addAttribute("编号", "001"); 22 Element name1=item1.addElement("名字").addText("苹果"); 23 24 Element item2=root.addElement("水果").addAttribute("编号", "002"); 25 Element name2=item2.addElement("名字").addText("柚子"); 26 27 Element item3=root.addElement("水果").addAttribute("编号", "003"); 28 Element name3=item3.addElement("名字").addText("草莓"); 29 30 //美化格式 31 OutputFormat format = OutputFormat.createPrettyPrint(); 32 //文件 33 FileWriter w=new FileWriter("c:/Users/bwf/Desktop/food.xml"); 34 //输出流 35 XMLWriter writer =new XMLWriter(w,format); 36 37 writer.write(dom); 38 writer.close(); 39 } 40 }