java解析xml文件(三种方式-(dom ,jdom ,dom4j)

test.xml文件
Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <HD>
  3. <disk name="C">
  4. <capacity>8G</capacity>
  5. <directories>200</directories>
  6. <files>1580</files>
  7. </disk>
  8. <disk name="D">
  9. <capacity>10G</capacity>
  10. <directories>500</directories>
  11. <files>3000</files>
  12. </disk>
  13. </HD>
<?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> 

第一种,利用dom方式解析xml 文件,无需jar包

Java代码 
  1. package Dom;
  2. import javax.xml.parsers.DocumentBuilder;
  3. import javax.xml.parsers.DocumentBuilderFactory;
  4. import org.w3c.dom.Document;
  5. import org.w3c.dom.Element;
  6. import org.w3c.dom.NodeList;
  7. public class DomXML {
  8. 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("-----------------------------------");
    }
    }
  1. }
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("-----------------------------------"); 
		}      
  	}
 }

输出结果为:

Xml代码 
  1. 磁盘信息:
  2. 分区盘符:C
  3. 分区容量:8G
  4. 目录数:200
  5. 文件数:1580
  6. -----------------------------------
  7. 磁盘信息:
  8. 分区盘符:D
  9. 分区容量:10G
  10. 目录数:500
  11. 文件数:3000
  12. -----------------------------------
磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-----------------------------------
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000
-----------------------------------

第二种,利用Jdom方式解析xml文件,需要下载jdom.jar(见附件)

Java代码 
  1. package Dom;
  2. import java.util.List;
  3. import org.jdom.Document;
  4. import org.jdom.Element;
  5. import org.jdom.input.SAXBuilder;
  6. public class JDomXML {
  7. 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("-----------------------------------");
    }
    }
    }
  1. }
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("-----------------------------------"); 
    }   
  } 
} 

输出结果为:

Xml代码 
  1. 磁盘信息:
  2. 分区盘符:C
  3. 分区容量:8G
  4. 目录数:200
  5. 文件数:1580
  6. -----------------------------------
  7. 磁盘信息:
  8. 分区盘符:D
  9. 分区容量:10G
  10. 目录数:500
  11. 文件数:3000
  12. -----------------------------------
磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-----------------------------------
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000
-----------------------------------

第三种,利用dom4j方式解析xml文件,需要下载 dom4j-1.6.1.jar(见附件)

Java代码 
  1. package Dom;
  2. import java.util.Iterator;
  3. import org.dom4j.Document;
  4. import org.dom4j.Element;
  5. import org.dom4j.io.SAXReader;
  6. public class Dom4jXML{
  7. 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("-----------------------------------");
    }
    }
  1. }
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代码 
  1. 磁盘信息:
  2. 分区盘符:C
  3. 分区容量:8G
  4. 目录数:200
  5. 文件数:1580
  6. -----------------------------------
  7. 磁盘信息:
  8. 分区盘符:D
  9. 分区容量:10G
  10. 目录数:500
  11. 文件数:3000
  12. -----------------------------------
磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-----------------------------------
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000
-----------------------------------

总结:DOM4J性能最好
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值