/*这个程序完成的功能是读取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();
}
}
}
评论加载中...- 2009-3-27使用CAM机制提高XML验证水平
- 2009-3-21数据库中的pureXML优点介绍
- 2009-3-21XML新手入门 创建构造良好的XML
- 2009-3-21RSS解析器MagpieRSS笔记
- 2009-3-21平面文档索引解决方案(基于XML与XSLT)
- 2009-3-21实现XML和Web服务时要避免的三种常见错误
- 2009-3-21XPath表达式语法概要(二)
- 2009-3-21XPath表达式语法概要(一)
- 2009-3-21利用DOM解析company.xml文件
- 2009-3-21分析DOM树的结构
