dom4j操作xml

首先参考dom4j官方文档的描述:

Features

·        designed forthe Java platform with full support for the Java Collections Framework(Java 2 Collections)

·        full supportfor JAXPTrAX,SAX,DOM,andXSLT

·        fullyintegrated XPath support for easy navigation of XML documents

·        event basedproccessing mode to support for massive documents or XML streams

·        based on Javainterfaces for flexible plug and play implementations.

·        support for XML Schema Data Type support using Kohsuke Kawaguchi'sexcellent Multi Schema Validatorlibrary

本人英语水平不济,在此不做翻译。敬请谅解!大家自己看吧。

这是dom4j开发需要的两个jar包,jaxen-1.1.1.jar.zip是针对xPath解析的,如果不涉及到xPath解析,则dom4j-1.6.1.jar一个包就够用了。


下面针对dom4j的部分重要接口或者类的API进行介绍:

1.      Document相关

[java]  view plain copy
  1. (1// 读取xml文件,获得document对象  
  2.         SAXReader reader = new SAXReader();  
  3.         Document doc = reader.read(new File(fileName));  
  4. (2//解析XML形式的文本,获得document对象.  
  5.     String xml = "<books></books>";  
  6.     Document document = DocumentHelper.parseText(xml);  
  7. (3//创建document对象  
  8.         Document document = DocumentHelper.createDocument();  
  9.         Element rootElement = document.addElement("books");  

2.      Element相关

[java]  view plain copy
  1. (1//取得根节点  
  2.     Element rootNode= document.getRootElement();  
  3. (2//取得某个节点的节点名  
  4.         Element booksElement = rootElement.element("books");  
  5. (3//取得某个节点的值  
  6.         String text = booksElement.getText();  
  7. (4//取得books节点名为book的的子节点的文字值  
  8.         String bookElement = rootElement.elementText("book");  
  9. (5//取得books节点下名称为book的子节点并遍历  
  10.         List elements = rootElement.elements("book");  
  11.         for(Iterator ite = elements.iterator();ite.hasNext();){  
  12.            Element ele = (Element)ite.next();  
  13.         }  
  14. (6//遍历某节点下所有子节点  
  15.         for(Iterator ite = rootNode.elementIterator();ite.hasNext();){  
  16.         Element element = (Element)ite.next();  
  17.     }  
  18. (7//向某节点添加子节点并赋值  
  19.         Element titleElement = booksElement.addElement("title");  
  20.         titleElement.addText("《百年孤独》");  
  21. (8//删除某节点  
  22.         booksElement.remove(titleElement);  

3.      Attribute相关

[java]  view plain copy
  1. (1//添加属性并设置属性值  
  2.         Element bookElement = booksElement.addElement("book");  
  3.         bookElement.addAttribute("show""yes");  
  4. (2//设置节点的属性  
  5.         Attribute attri = booksElement.attribute("date");  
  6.         attri.setText(“2011-09-09”);  
  7. (3//删除属性  
  8.         boosElement.remove(attri);  
  9. (4//遍历属性  
  10.         Element root=document.getRootElement();        
  11.         for(Iterator it=root.attributeIterator();it.hasNext();){     
  12.             Attribute attribute = (Attribute) it.next();     
  13.             String text=attribute.getText();     
  14.         }    

4.      读写xml文档

[java]  view plain copy
  1. (1//写入xml文档  
  2.         XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(fileName));  
  3.         xmlWriter.write(doc);  
  4.         xmlWriter.close();  
  5. (2//设置输出格式和编码格式  
  6.         Document doc = reader.read(fileName);  
  7.         OutputFormat format = OutputFormat.createPrettyPrint();  
  8.         //OutputFormat format = OutputFormat.createCompactFormat();  
  9.         format.setEncoding("GBK");  
  10.         //XMLWriter writer = new XMLWriter(new FileWriter(newFile),format);  
  11.         XMLWriter writer = new XMLWriter(System.out,format);  
  12.         writer.write(doc);  
  13.         writer.close();  
  14.         returnValue=1;  

5.      字符串与xml转换

[java]  view plain copy
  1. (1//xml转为字符串  
  2.         SAXReader reader = new SAXReader();     
  3.         Document document = reader.read(new File("C:/dom4jTest/newTest.xml"));  
  4.         Element root=document.getRootElement();                    
  5.         String docXmlText=document.asXML();     
  6.         String rootXmlText=root.asXML();     
  7.         Element memberElm=root.element("book");     
  8.         String memberXmlText=memberElm.asXML();  
  9. (2//字符串转xml  
  10.         String text = "<User type=\"user\"><name type=\"PinYin\">马克思</name><age>29</age></User>";  
  11.         Document doc = DocumentHelper.parseText(text);  

6.      xPath查找节点和属性

[java]  view plain copy
  1. (1//根据xPath查找属性  
  2.         SAXReader saxReader = new SAXReader();  
  3.         Document document = saxReader.read(new File(fileName));  
  4.         //如果book中的属性show为yes则改为no  
  5.         List list = document.selectNodes("/books/book/@show");  
  6.         Iterator ite = list.iterator();  
  7.         while(ite.hasNext()){  
  8.                 Attribute attribute = (Attribute)ite.next();  
  9.                 if(attribute.getValue().equals("yes")){  
  10.             attribute.setValue("no");  
  11.             }else{  
  12.             attribute.setValue("yes");  
  13.             }  
  14.     }  
  15. (2//根据xPath查找节点  
  16.     //修改owner 并加入时间节点  
  17.     list = document.selectNodes("/books/owner");  
  18.     ite = list.iterator();  
  19.     while(ite.hasNext()){  
  20.         Element ownerElement = (Element)ite.next();  
  21.         ownerElement.setText("ChinaRen");  
  22.         Element dateElement = ownerElement.addElement("date");  
  23.         dateElement.setText("2011-09-05");  
  24.         dateElement.addAttribute("type""Gregorian-calendar");   
  25.     } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值