title: SAXReader解析xml文档
date: 2017-11-13 22:26:17
tags: xml
categories: xml
解析前准备
导入dom4j-full.jar包
dom4j是一个类似于jdom的java xml API,用来读写XML文件。
举例:
bean.xml内容
编写一个名为 bean.xml 的xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="Student" name="com.pojo.Student" ></bean>
</beans>
解析
假设有一个Student类在com.pojo 包下。
getInstance(String id)方法:根据传递过来的id解析xml文件找到对应的标签,再获取该标签中name属性的值(com.pojo.Student 一个类的全类名),通过反射得到Student类,返回它。
package com.spring;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ApplicationContext {
public static Object getInstance(String id) throws FileNotFoundException,
DocumentException, ClassNotFoundException, InstantiationException,
IllegalAccessException {
// 解析自己写的bean.xml
SAXReader reader = new SAXReader();
// 读取xml文件
Document document = reader.read(new FileInputStream("src/bean.xml"));
// 根据id得到 bean标签 元素
Element element = (Element) document.selectSingleNode("beans/bean[@id='"
+ id + "']");
// 根据元素去属性值 -- 是一个类的全类名
String name = element.attributeValue("name");
// 反射到对应的类
Class c = Class.forName(name);
// 返回这个类的一个示例 新new的
return c.newInstance();
}
}