Jdom学习

JDom 与SAX DOM相比的优势
1. SAX中没有Document概念
2. DOM对与Java程序员来说语法不习惯。
3. Jdom并不是以DOM为基础开发的

下面写几个例子来对JDom进行介绍:

1. 利用JDom生成XML信息
 
  1. package com.verran.jdom;   
  2. import java.io.FileWriter;   
  3. import java.io.IOException;   
  4. import java.util.List;   
  5.   
  6. import org.jdom.*;   
  7. import org.jdom.output.Format;   
  8. import org.jdom.output.XMLOutputter;   
  9. public class XMLCreate {   
  10.     Element root=new Element("Student");   
  11.     Document document=new Document(root);   
  12. public XMLCreate(){   
  13.     String [] name ={"VerRan","LHT","XXX"};   
  14.     //document.addContent(root);   
  15.     for(int i=0;i
  16.         Element nameElement=new Element("name");   
  17.         nameElement.addContent(name[i]);   
  18.         nameElement.setAttribute("sort",new Integer(i).toString());   
  19.         Element sno=new Element("sno");   
  20.         sno.addContent(new Integer(i).toString());   
  21.         root.addContent(nameElement);   
  22.         root.addContent(sno);   
  23.     }   
  24.     deleteElement("sno");   
  25.     OutPutXML(document,"e:/myJDOM.xml");   
  26. }   
  27.   
  28. private void OutPutXML(Document document, String fileName) {   
  29.     // TODO Auto-generated method stub   
  30.     XMLOutputter  xmlout=new XMLOutputter();   
  31.     try {   
  32.         Format fm=xmlout.getFormat();   
  33.         fm.setEncoding("big5");   
  34.         fm.setLineSeparator("/n");   
  35.         //xmlout.setFormat()   
  36.         FileWriter fw=new FileWriter(fileName);   
  37.         xmlout.output(document, fw);   
  38.     } catch (IOException e) {   
  39.         // TODO Auto-generated catch block   
  40.         e.printStackTrace();   
  41.     }   
  42.        
  43. }   
  44. private void deleteElement(String name){   
  45. List list=  root.getChildren(name);   
  46. list.remove(1);   
  47. }   
  48. public static void main(String[] args){   
  49.     XMLCreate xmlcreate=new XMLCreate();   
  50. }   
  51. }   

2. 生成的XML文件
xml 代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <Student><name sort="0">VerRanname><sno>0sno><name sort="1">LHTname><name sort="2">XXXname><sno>2sno>Student>  

3. 读取XML信息
  3.1 xml信息
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <HD>  
  3.  <disk name="C">  
  4.   <capacity>8Gcapacity>  
  5.   <directories>200directories>  
  6.   <files>1580files>  
  7.  disk>  
  8.  <disk name="D">    
  9.   <capacity>10Gcapacity>  
  10.   <directories>500directories>  
  11.   <files>3000files>    
  12.  disk>  
  13. HD>  
   3.2 java代码
 
java 代码
  1. package com.verran.jdom;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.List;   
  5.   
  6. import org.jdom.Document;   
  7. import org.jdom.Element;   
  8. import org.jdom.JDOMException;   
  9. import org.jdom.input.SAXBuilder;   
  10.   
  11. public class JdomDemo {   
  12. public static void main(String args[]){   
  13.     //采用默认的SAXBuilder   
  14.     //也可以采用DOMBuilder来将由DOM创建的Document转换成JDOM的Document   
  15.     SAXBuilder saxBuilder=new SAXBuilder();   
  16.     try {   
  17.         Document doc=saxBuilder.build("test.xml");   
  18.         Element root=doc.getRootElement();   
  19.         List children=root.getChildren("disk");   
  20.         for(int i=0;i
  21.         Element element=(Element)children.get(i);   
  22.         String name=element.getAttributeValue("name");   
  23.         String capacity=element.getChildText("capacity");   
  24.         String directories=element.getChildText("directories");   
  25.            String files=element.getChildText("files");   
  26.            System.out.println("磁盘信息:");   
  27.            System.out.println("分区盘符:"+name);   
  28.            System.out.println("分区容量:"+capacity);   
  29.            System.out.println("目录数:"+directories);   
  30.            System.out.println("文件数:"+files);   
  31.            System.out.println("-----------------------------------");   
  32.   
  33.         }   
  34.     } catch (JDOMException e) {   
  35.         // TODO Auto-generated catch block   
  36.         e.printStackTrace();   
  37.     } catch (IOException e) {   
  38.         // TODO Auto-generated catch block   
  39.         e.printStackTrace();   
  40.     }   
  41. }   
  42. }   

3.3

java 代码
  1. package com.pub.util;   
  2.   
  3. import java.io.File;   
  4. import java.io.IOException;   
  5. import java.util.List;   
  6. import org.jdom.Attribute;   
  7. import org.jdom.Document;   
  8. import org.jdom.Element;   
  9. import org.jdom.JDOMException;   
  10. import org.jdom.input.SAXBuilder;   
  11.   
  12. public class PaserXML {   
  13.   
  14.     /**  
  15.      * @param args  
  16.      */  
  17.        
  18.     org.jdom.input.SAXBuilder builder=new SAXBuilder();   
  19.        
  20.     //根据Jdom函数解析XML文档   
  21.     public void paserByJdom(){   
  22.         try {   
  23.             Document document=builder.build(new File("c:/myJDOM1.xml"));   
  24.             Element root=document.getRootElement();   
  25.             System.out.println(root.getName());   
  26.             List list=root.getChildren();   
  27.             System.out.println(list.size());   
  28.             for(int i=0;i<list.size();i++){   
  29.             Element element=(Element)list.get(i);   
  30.             System.out.println("++++++++++++++++++++++++++++++");   
  31.             System.out.println("第I个"+"element.getName()"+element.getName());   
  32.             List attr=element.getAttributes();   
  33.             //System.out.println(attr.size());   
  34.                
  35.             for(int j=0;j<attr.size();j++){   
  36.              Attribute  attribute=(Attribute)attr.get(j);   
  37.              System.out.println("第"+i+"个节点的"+"第"+j+"个属性是名"+attribute.getName());   
  38.              System.out.println("第"+i+"个节点的"+"第"+j+"个属性是值"+attribute.getValue());   
  39.             }   
  40.                
  41.             System.out.println("++++++++++++++++++++++++++++++");   
  42.             }   
  43.         } catch (JDOMException e) {   
  44.             // TODO Auto-generated catch block   
  45.             e.printStackTrace();   
  46.         } catch (IOException e) {   
  47.             // TODO Auto-generated catch block   
  48.             e.printStackTrace();   
  49.         }   
  50.     }   
  51.        
  52.     //根据XPATH解析XML   
  53.     public void parserByXpath(){   
  54.            
  55.          try {   
  56.                 Document document=builder.build(new File("c:/myJDOM1.xml"));   
  57.                 Element root=document.getRootElement();   
  58.                 System.out.println(root.getName());   
  59.                 List list=org.jdom.xpath.XPath.selectNodes(root,"/root/order/order-id");   
  60.                 System.out.println(list.size());   
  61.                 for(int i=0;i<list.size();i++){   
  62.                     Element element=(Element)list.get(i);   
  63.                     System.out.println("element.getName()"+element.getName());   
  64.                     System.out.println("element.getValue()"+element.getValue());   
  65.   
  66.                     //org.jdom.xpath.XPath.selectSingleNode(element, "//order-id ");   
  67.                 }   
  68.             } catch (JDOMException e) {   
  69.                 // TODO Auto-generated catch block   
  70.                 e.printStackTrace();   
  71.             } catch (IOException e) {   
  72.                 // TODO Auto-generated catch block   
  73.                 e.printStackTrace();   
  74.             }   
  75.            
  76.     }   
  77.     public static void main(String[] args) {   
  78.         // TODO Auto-generated method stub   
  79.         PaserXML p=new PaserXML();   
  80.         p.parserByXpath();   
  81.   
  82.        
  83.     }   
  84.   
  85. }   



附录:
http://www.jdom.org/docs/apidocs/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值