Xml解析

12/12/2015来源:Java教程人气:699

dom4j解析xml

    public static void main(String[] args) {
        ReaderMyXml reader = new ReaderMyXml();
        HashMap<String, String> hm = new HashMap<String, String>();
        String n = System.getPRoperty("user.dir");// 获取当前工程真实路径
        // System.out.println(n);
        String path = n + "\\src\\students.xml";
        // System.out.println(path);
        reader.toReaderXml(path, hm);
        System.out.println(hm.size());
        System.out.println("--------------------------------------------");
        System.out.println("姓名\t年龄\t性别\t电话");
        /*
         * for (int i = 0; i < hm.size()/4-1;i++ ) {
         * System.out.print(hm.get("stuname:"+(i+1))+"\t");
         * System.out.print(hm.get("stuage:"+(i+1))+"\t");
         * System.out.print(hm.get("sex:"+(i+1))+"\t");
         * System.out.print(hm.get("phone:"+(i+1))+"\t"); System.out.println();
         * }
         */
        for (int i = 0; i < hm.size(); i += 5) {
            int its = i / 5 + 1;
            System.out.print(hm.get("stuname:" + (its)) + "\t");
            System.out.print(hm.get("stuage:" + (its)) + "\t");
            System.out.print(hm.get("sex:" + (its)) + "\t");
            System.out.print(hm.get("phone:" + (its)) + "\t");
            System.out.println();
        }
        System.out.println("--------------------------------------------");
    }
}
package org.cn.com;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中
 * @param filename String 待遍历的XML文件(相对路径或者绝对路径)
 * @param hm HashMap 存放遍历结果
 */
public class ReaderMyXml {
    /**
     * 使用Dom4j读取XML文件
     * @param fileName 文件的全名称(路径+名称)
     * @param hm 哈希集合,用于存放XML读取到的信息
     */
    @SuppressWarnings("unchecked")
    public void toReaderXml(String fileName,HashMap<String, String> hm){
        //创建Dom4J的一个对象
        SAXReader saxReader=new SAXReader();
        //创建File类,xml是一个文件,所以要得到这个文件
        File xmlFile=new File(fileName);
        
        int num=0;
        try {
            //装载到Dom4J中
            Document document=saxReader.read(xmlFile);
            //获取xml的根节点,对我我们当前的XML文件,跟节点是:students
            Element root=document.getRootElement();
            //获取到根节点之后就可以根据根节点获取其下所有的子节点
            for (Iterator<Element> itera=root.elementIterator();itera.hasNext();) {
                //读取二级节点
                Element secondNode=itera.next();
                num++;
                Attribute idAttr=secondNode.attribute("id");
                if (idAttr!=null) {
                    hm.put(idAttr.getName()+":"+num, idAttr.getValue());
                }
                //System.out.println(idAttr.getName()+"、"+num+":" +idAttr.getValue());
                
                for (Iterator<Element> iteraInner=secondNode.elementIterator();iteraInner.hasNext();) {
                    //读取三级节点
                    Element thirdNode=iteraInner.next();
                    //System.out.println(thirdNode.getText());
                    hm.put(thirdNode.getName()+":"+num, thirdNode.getText());
                }
                //System.out.println("-----------------------------------------");
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    
}

执行结果


35
--------------------------------------------
姓名 年龄 性别 电话
孙悟空 26 男 15989562589
牛魔王 28 男 13956892578
猪悟能 27 男 13856230589
嫦娥 22 女 18956877852
铁扇公主 23 女 15802563215
白骨精 23 女 13756983698
女儿国王 21 女 18256892306
--------------------------------------------