`
baobaocao521
  • 浏览: 29212 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

XML解析之Dom4j解析

阅读更多
package xml;

import java.util.HashMap;

/**
 * 测试Dom4jReadExmple解析的情况
 * 
 * @author cuiweibing
 * @since 2007.8.10
 */
public class TestDom4jReadExmple
{
    public static void main(String[] args)
    {
        try
        {
            // 获取解析完后的解析信息
            HashMap<String, String> hashMap;
            Dom4jReadExmple drb = new Dom4jReadExmple();
            // 遍历整个XML文件
            hashMap = new HashMap<String, String>();
            drb.iterateWholeXML("E:/student.xml", hashMap);
            System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t\t备注");
            for (int i = 0; i < hashMap.size(); i += 6)
            {
                int j = i / 6;
                System.out.print(hashMap.get("name" + j) + "\t");
                System.out.print(hashMap.get("student-age" + j) + "\t");
                System.out.print(hashMap.get("college" + j) + "\t");
                System.out.print(hashMap.get("college-leader" + j) + "\t");
                System.out.print(hashMap.get("telephone" + j) + "\t");
                System.out.println(hashMap.get("notes" + j) + "\t");
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

 

=========低调的分割线====================

 

package xml;

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;

/**
 * 利用dom4j进行XML编程
 * 
 * @author cuiweibing
 * @since 2007.8.10
 */
public class Dom4jReadExmple
{
    /**
     * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中
     * 
     * @param filename String 待遍历的XML文件(相对路径或者绝对路径)
     * @param hm HashMap 存放遍历结果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>
     */
    public void iterateWholeXML(String filename, HashMap<String, String> hm)
    {
        SAXReader saxReader = new SAXReader();
        try
        {
            Document document = saxReader.read(new File(filename));
            Element root = document.getRootElement();
            // 用于记录学生编号的变量
            int num = -1;
            // 遍历根结点(students)的所有孩子节点(肯定是student节点)
            for (Iterator iter = root.elementIterator(); iter.hasNext();)
            {
                Element element = (Element)iter.next();
                num++;
                // 获取person节点的age属性的值
                Attribute ageAttr = element.attribute("age");
                if (ageAttr != null)
                {
                    String age = ageAttr.getValue();
                    if (age != null && !age.equals(""))
                    {
                        hm.put(element.getName() + "-" + ageAttr.getName() + num, age);
                    }
                    else
                    {
                        hm.put(element.getName() + "-" + ageAttr.getName() + num, "20");
                    }
                }
                else
                {
                    hm.put(element.getName() + "-age" + num, "20");
                }
                // 遍历student结点的所有孩子节点(即name,college,telphone,notes),并进行处理
                for (Iterator iterInner = element.elementIterator(); iterInner.hasNext();)
                {
                    Element elementInner = (Element)iterInner.next();
                    if (elementInner.getName().equals("college"))
                    {
                        hm.put(elementInner.getName() + num, elementInner.getText());
                        // 获取college节点的leader属性的值
                        Attribute leaderAttr = elementInner.attribute("leader");
                        if (leaderAttr != null)
                        {
                            String leader = leaderAttr.getValue();
                            if (leader != null && !leader.equals(""))
                            {
                                hm.put(elementInner.getName() + "-" + leaderAttr.getName() + num, leader);
                            }
                            else
                            {
                                hm.put(elementInner.getName() + "-" + leaderAttr.getName() + num, "leader");
                            }
                        }
                        else
                        {
                            hm.put(elementInner.getName() + "-leader" + num, "leader");
                        }
                    }
                    else
                    {
                        hm.put(elementInner.getName() + num, elementInner.getText());
                    }
                }
            }
            
        }
        catch (DocumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics