创建一个xml解析工具类,了解其解析原理。
全程使用封装思想。
需求:创建一个xml解析工具类,通过用户指定的id值或者class文件路径判断其是否存在,如果存在就返回相对应的对象,如果不存在就返回null;
需要用到的知识:
【变量定义,数据类型转换,控制语句,循环,自定义方法,类的定义,多态,集合框架,IO流,异常体系,反射,xml解析等知识】
工具类封装代码:
package cn.yun.xmldom;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*xml解析工具类 使用DOM4j进行解析
*需求:解析xml文件,数据通过map集合进行存储,通过传入指定的ID值或者class值返回给一个对应的实体类对象
*封装思路:解析需要的xml文件,将解析后的id值和class值存储到map集合中,根据用户给定的id或class路径判断map集合中
*是否存在,如果存在就通过获取的路径进行反射,返回一个对应的实体类对象
*步骤:
*1,创建一个解析器,通过解析器解析xml文件(以流的形式解析) 解析后返回的是Document对象
*2,使用解析器解析xml文件,将得到的id值或class值存入map集合中
*2.1:先创建一个map集合,用来存储id值或者class值
*2.2:进行解析,获取对应的值,将对应的值存放在map集合中
*3,定义一个功能,根据用户指定的id值返回相应的对象
*4,定义一个功能,根据用户指定的class值返回相应的对象
*/
public class XmlDemo {
public static void main(String[] args) throws FileNotFoundException, DocumentException, ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetE