利用DOM解析company.xml文件
中国IT站 www.chinaitz.com 2009-3-21

/*这个程序完成的功能是读取company.xml文件的内容,然后
 * 将employee标签下的信息封装到Employee对象中,最后将
 * Employee对象保存到HashMap中
 */
package coresun.cn;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import java.io.*;
import java.util.*;
public class DOMEmployee1 {
    public static void main(String[] args) {
        HashMap<String, Employee> map = new HashMap<String, Employee>();
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = factory.newDocumentBuilder();
            //解析company.xml文件,并且获得文档节点
            Document document = db.parse(new File("company.xml"));
            //通过文档节点获得,获取根元素节点
            Element root = document.getDocumentElement();
            //获取employee节点的集合
            NodeList nl = root.getElementsByTagName("employee");
            for (int i = 0; i < nl.getLength(); i++) {
                Employee e = new Employee();
                //获取employee元素
                Element n = (Element)nl.item(i);
                //获取employee元素的属性值
                String id = n.getAttribute("id");
                String sex = n.getAttribute("sex");
                //设置employee的id和sex属性
                e.setId(id);
                e.setSex(sex);
                //获取name元素的值
                Element name = (Element)(n.getElementsByTagName("name").item(0));
                Text nameText = (Text)name.getChildNodes().item(0);
                e.setName(nameText.getData().trim());
                //获取age元素的值
                Element age = (Element)(n.getElementsByTagName("age").item(0));
                Text ageText = (Text)age.getChildNodes().item(0);
                String sAge = ageText.getData().trim();
                e.setAge(Integer.parseInt(sAge));
                //获取interest元素的值
                NodeList interestList = n.getElementsByTagName("interest");
                //如果不存在interest元素则interestList长度为0
                String[] interestStringArray = new String[interestList.getLength()];
                for (int j = 0; j < interestList.getLength(); j++) {
                    Element in = (Element)interestList.item(j);
                    Text interestText = (Text)in.getChildNodes().item(0);
                    interestStringArray[j] = interestText.getData();
                }
                e.setInterest(interestStringArray);
                //获取salary元素的值
                NodeList salaryList = n.getElementsByTagName("salary");
                Element salaryElement = (Element)salaryList.item(0);
                NodeList salaryChild = salaryElement.getChildNodes();
                for (int j = 0; j < salaryChild.getLength(); j++) {
                    Node nSalaryChild = salaryChild.item(j);
                    if(nSalaryChild instanceof Element){
                        Text salaryText = (Text)nSalaryChild.getChildNodes().item(0);
                        String sSalry = salaryText.getData();
                        e.setSalary(Float.parseFloat(sSalry));
                    }
                }
                //以ID为key添加到HashMap中
                map.put(id, e);
            }
            System.out.println(map);
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

共2篇1 2 下一页
责任编辑:admin本文仅代表作者观点,与中国IT站立场无关。
收藏】 【推荐】 【投稿】 【 】 【打印】 【关闭
评论加载中...