首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

几种惯用xml解析

2012-12-25 
几种常用xml解析?xml version1.0 encodingUTF-8?HDdisk nameCcapacity8G/capacitydir

几种常用xml解析
    <?xml version="1.0" encoding="UTF-8"?>    
    <HD>    
      <disk name="C">    
        <capacity>8G</capacity>    
        <directories>200</directories>    
        <files>1580</files>    
      </disk>    
       
      <disk name="D">    
        <capacity>10G</capacity>    
        <directories>500</directories>    
        <files>3000</files>    
      </disk>    
    </HD>  
以上为test.xml文件内容
1、dom方式解析,无需jar
    package Dom; 
    import javax.xml.parsers.DocumentBuilder; 
    import javax.xml.parsers.DocumentBuilderFactory; 
    import org.w3c.dom.Document; 
    import org.w3c.dom.Element; 
    import org.w3c.dom.NodeList; 
     
    public class DomXML { 
         
        public static void main(String[] args)throws Exception { 
            //得到DOM解析器的工厂实例 
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
            //从DOM工厂中获得DOM解析器 
            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder(); 
            //声明为File为了识别中文名 
            Document doc = null; 
            doc = dbBuilder.parse("F:/work_sapce_petroskill/Spring/src/Dom/test.xml"); 
             
            //得到文档名称为Student的元素的节点列表 
            NodeList list = doc.getElementsByTagName("disk"); 
             
            //遍历该集合,显示结合中的元素及其子元素的名字 
            for(int i = 0; i< list.getLength() ; i ++){ 
                Element element = (Element)list.item(i); 
                String name=element.getAttribute("name"); 
                String capacity=element.getElementsByTagName("capacity").item(0).getFirstChild().getNodeValue(); 
                String directories=element.getElementsByTagName("directories").item(0).getFirstChild().getNodeValue(); 
                String files=element.getElementsByTagName("files").item(0).getFirstChild().getNodeValue(); 
                System.out.println("磁盘信息:");  
                System.out.println("分区盘符:"+name);  
                System.out.println("分区容量:"+capacity);  
                System.out.println("目录数:"+directories);  
                System.out.println("文件数:"+files);  
                System.out.println("-----------------------------------");  
            }       
        } 
     } 
2、jdom解析,jdom.jar
    package Dom; 
    import java.util.List; 
     
    import org.jdom.Document; 
    import org.jdom.Element; 
    import org.jdom.input.SAXBuilder; 
    public class JDomXML {  
      public static void main(String[] args) throws Exception{   
        SAXBuilder sb=new SAXBuilder();  
        Document doc=sb.build(Dom4jXML.class.getClassLoader().getResourceAsStream("Dom/test.xml")); //构造文档对象 
        Element root=doc.getRootElement(); //获取根元素 
        List list=root.getChildren("disk");//取名字为disk的所有元素  
        for(int i=0;i<list.size();i++){  
           Element element=(Element)list.get(i);  
           String name=element.getAttributeValue("name");  
           String capacity=element.getChildText("capacity");//取disk子元素capacity的内容  
           String directories=element.getChildText("directories");  
           String files=element.getChildText("files");  
           System.out.println("磁盘信息:");  
           System.out.println("分区盘符:"+name);  
           System.out.println("分区容量:"+capacity);  
           System.out.println("目录数:"+directories);  
           System.out.println("文件数:"+files);  
           System.out.println("-----------------------------------");  
        }    
      }  
    }  
3、dom4j,dom4j。jar
package Dom; 
import java.util.Iterator; 
import org.dom4j.Document; 
import org.dom4j.Element; 
import org.dom4j.io.SAXReader; 
 
public class Dom4jXML{    
   public static void main(String[] args) throws Exception { 
     
        //创建文件对象    
        java.io.File file=new java.io.File("F:/workSapce/javaXML/src/Dom/test.xml");    
        //创建一个读取XML文件的对象    
        SAXReader reader=new SAXReader();    
        //创建一个文档对象    
        Document document=reader.read(file);    
        //获取文件的根节点    
        Element element=document.getRootElement(); 
        for(Iterator i=element.elementIterator("disk");i.hasNext();){ 
            //获取节点元素    
            element=(Element)i.next(); 
            String name=element.attributeValue("name"); 
            String capacity=element.elementText("capacity");//取disk子元素capacity的内容  
            String directories=element.elementText("directories");  
            String files=element.elementText("files");  
            System.out.println("磁盘信息:");  
            System.out.println("分区盘符:"+name);  
            System.out.println("分区容量:"+capacity);  
            System.out.println("目录数:"+directories);  
            System.out.println("文件数:"+files);  
            System.out.println("-----------------------------------");  
        }    
    }    
}   
以上为几种常见的xml文件解析方法
转自:http://lhkzyz.iteye.com/blog/1681905
此外还有sax等解析方法,而且sax速度很快,很好用,文件小点儿的话用dom或者jdom,不过原理基本相同,就是效率的问题
以后还会更新...

热点排行