JDOM对xml的解析

来源:互联网 发布:java aes 256 cbc加密 编辑:程序博客网 时间:2024/05/16 14:09

sample.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>100G</capacity>
      <directories>500</directories>
      <files>3000</files>
   </disk>

</HD>

解析类sample.java:

package jdom.sample;

import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class Sample {

 /**
  * @param args
  * @throws IOException
  * @throws JDOMException
  */
 public static void main(String[] args) throws Exception {
  SAXBuilder sb=new SAXBuilder();
  Document doc=sb.build("sample.xml");//构造文档对象
  Element root=doc.getRootElement();//获取根节点
  List list=root.getChildren();//取名字为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");
   String dirctories=element.getChildText("directories");
   String files=element.getChildText("files");
   System.out.println("磁盘信息:");
   System.out.println("分区盘符:"+name);
   System.out.println("分区容量:"+capacity);
   System.out.println("目录数:"+dirctories);
   System.out.println("文件数:"+files);
   System.out.println("---------------------");
   
  }
  

 }

}

 

或者如JodmXml如下:

package jdom.sample;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;


public class JdomXml {

 /**
  * @param args
  */
 public JdomXml(){}
 
 public void parseXml(File xmlFile) {
    SAXBuilder sax = new SAXBuilder();//在内存中建立一个sax文档模型
    try {
     Document xmlDom = sax.build(xmlFile);//创建文档
     //获得文件的根元素
     Element root = xmlDom.getRootElement();
     System.out.println("根元素是:"+root.getName());
    
     //获得根元素的子节点
     List childList = root.getChildren();
     Iterator listIt = childList.iterator();
     while(listIt.hasNext()){
      Element element = (Element)listIt.next();
      System.out.println("孩子结点是:"+element.getName());
     }
     System.out.println("孩子节点如下:-----------------------------");
    
     for(int i=0;i<childList.size();i++){
    
     //获得第一个孩子结点
     Element child = (Element) childList.get(i);
     //获得孩子结点的属性
     List attrList = child.getAttributes();
     Iterator attrIt = attrList.iterator();
     while(attrIt.hasNext()){
      Attribute  attr = (Attribute ) attrIt.next();
     
      System.out.println("第"+(i+1)+"个元素的属性是:"+attr.getName());
      //获得属性的值
      System.out.println("属性的值是:"+attr.getValue());
      //获得属性的类型
      System.out.println("属性的类型是:"+attr.getAttributeType());
     }
    
     List sonList = child.getChildren();
     Iterator sonIt = sonList.iterator();
     while(sonIt.hasNext()){
      Element temp = (Element)sonIt.next();
      System.out.println("属性"+temp.getName()+"的值是:"+temp.getValue());
     }
     System.out.println("------------------------");
    
     }
    
    } catch (JDOMException e) {
     e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  
   public static void main(String[] args) {
    JdomXml test = new JdomXml();
    test.parseXml(new File("sample.xml"));
   }
  }

 

 

 

原创粉丝点击