码迷,mamicode.com
首页 > 其他好文 > 详细

SAX解析XML文件

时间:2014-08-28 18:22:56      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:sax 、解析、xml 、dom4j

package com.softeem.xml.util;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.softeem.xml.dto.ClassDTO;
import com.softeem.xml.dto.CollegeDTO;
import com.softeem.xml.dto.StudentDTO;

public class SAXParseXML {
	
	public static void main(String[] args) throws Exception {
		String path = "D:/stus.xml";
		
		CollegeDTO college = saxParse(path);
		System.out.println(college.getClasses().get("计科1班").getStus().get("20111114").getStuName());
	}

	public static CollegeDTO saxParse(String path){
		CollegeDTO college = null;
		try {
			SAXReader reader = new SAXReader();
			//解析目标文件
			Document dom = reader.read(new File(path));
			//获取根节点
			Element root = dom.getRootElement();
			//获取根节点属性
//		Attribute attr = root.attribute("id");
//		String attrValue = attr.getValue();
//		String cid = root.attribute("id").getValue();
			String cid = root.attributeValue("id");
			String cname = root.attributeValue("name");
			
			//获取根节点的子节点
			List<Element> cses = root.elements("class");
			
			Map<String, ClassDTO> classes = new HashMap<String, ClassDTO>();
			for (int i = 0; i < cses.size(); i++) {
				Element cse = cses.get(i);
				String className = cse.attributeValue("className");
				String classNum = cse.attributeValue("classNum");
				List<Element> stes = cse.elements("student");
				
				Map<String, StudentDTO> stus = new HashMap<String, StudentDTO>();
				for (Element ste : stes) {
					String stuNum = ste.attributeValue("stuNum");
					String stuName = ste.attributeValue("stuName");
					String stuSex = ste.attributeValue("stuSex");
					String stuAge = ste.attributeValue("stuAge");
					StudentDTO stu = new StudentDTO(stuNum, stuName, stuSex, Integer.parseInt(stuAge));
					stus.put(stuNum, stu);
				}
				ClassDTO cla = new ClassDTO(className, Integer.parseInt(classNum), stus);
				classes.put(className, cla);
			}
			college = new CollegeDTO(Integer.parseInt(cid), cname, classes);
			
		} catch (Exception e) {
			System.err.println("出现错误!");
		}
		return college;
	}
}
<!--stus.xml文件-->
<?xml version="1.0" encoding="UTF-8"?>
<college id="1001" name="">
	<class className="计科1班" classNum="41">
		<student stuNum="20111111" stuName="" stuSex="男" stuAge="20" />
		<student stuNum="20111112" stuName="" stuSex="男" stuAge="21" />
		<student stuNum="20111113" stuName="" stuSex="女" stuAge="20" />
		<student stuNum="20111114" stuName="" stuSex="男" stuAge="19" />
	</class>
	<class className="网工1班" classNum="49">
		<student stuNum="20112111" stuName="" stuSex="男" stuAge="21" />
		<student stuNum="20112112" stuName="" stuSex="男" stuAge="20" />
		<student stuNum="20112113" stuName="" stuSex="女" stuAge="22" />
	</class>
</college>


本文出自 “黑足Sanji” 博客,谢绝转载!

SAX解析XML文件

标签:sax 、解析、xml 、dom4j

原文地址:http://974124461.blog.51cto.com/8685015/1546148

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!