static{
InputStream is = Analyze.class.getResourceAsStream("/my.xml");
SAXReader reader = new SAXReader();
try {
Document document = reader.read(is);
Element root = document.getRootElement();
List<Element> elements = root.elements();
/** 解析 TODO XML*/
for (Element element : elements) {
//判断当前的maps里面是否已经有这个标签
boolean flag = true;
ArrayList<HashMap<String, String>> values = maps.get(element.getName());
if(values == null){
flag = false;
values = new ArrayList<>();
}
//添加屬性
List<Attribute> attributes = element.attributes();
if (attributes != null && attributes.size() > 0){
HashMap<String , String> keysAndAalues = new HashMap<>();
for (Attribute attribute : attributes) {
keysAndAalues.put(attribute.getName(),attribute.getValue());
}
values.add(keysAndAalues);
}
if(!flag){
maps.put(element.getName(),values);
}
}
/** 解析 TODO XML*/
Set<String> tagsName = maps.keySet();
for (String s : tagsName) {
dom4j(s);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(beanMaps.get("student"));
}
private static void dom4j(String tag) {
if(tag.equals("context")){
//根据当前的标签获取对应的值
ArrayList<HashMap<String, String>> context = maps.get(tag);
for (HashMap<String, String> values : context) {
Set<Map.Entry<String, String>> entries = values.entrySet();
for (Map.Entry<String, String> entry : entries) {
//判断功能
if(entry.getKey().equalsIgnoreCase("packageToScan")){
String value = entry.getValue();
List<String> packages = new ArrayList<>();
if(value.contains(",")){
String[] packageNames = value.split(",");
packages = Arrays.asList(packageNames);
}else{
packages.add(value);
}
// System.out.println(packages);
creatBeanByPaht(packages);
}
}
}
}
if(tag.equals("bean")){
ArrayList<HashMap<String, String>> beans = maps.get(tag);
for (HashMap<String, String> bean : beans) {
Set<Map.Entry<String, String>> es = bean.entrySet();
String className = "";
String classPath = "";
for (Map.Entry<String, String> entry : es) {
if(entry.getKey().equals("id")){
className = entry.getValue();
}
if(entry.getKey().equals("class")){
classPath = entry.getValue();
}
}
try {
// System.out.println(classPath);
Class<?> clazz = Class.forName(classPath);
// System.out.println(classPath + "--" + clazz);
Object obj = clazz.newInstance();
beanMaps.put(className,obj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
InputStream is = Analyze.class.getResourceAsStream("/my.xml");
SAXReader reader = new SAXReader();
try {
Document document = reader.read(is);
Element root = document.getRootElement();
List<Element> elements = root.elements();
/** 解析 TODO XML*/
for (Element element : elements) {
//判断当前的maps里面是否已经有这个标签
boolean flag = true;
ArrayList<HashMap<String, String>> values = maps.get(element.getName());
if(values == null){
flag = false;
values = new ArrayList<>();
}
//添加屬性
List<Attribute> attributes = element.attributes();
if (attributes != null && attributes.size() > 0){
HashMap<String , String> keysAndAalues = new HashMap<>();
for (Attribute attribute : attributes) {
keysAndAalues.put(attribute.getName(),attribute.getValue());
}
values.add(keysAndAalues);
}
if(!flag){
maps.put(element.getName(),values);
}
}
/** 解析 TODO XML*/
Set<String> tagsName = maps.keySet();
for (String s : tagsName) {
dom4j(s);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(beanMaps.get("student"));
}
private static void dom4j(String tag) {
if(tag.equals("context")){
//根据当前的标签获取对应的值
ArrayList<HashMap<String, String>> context = maps.get(tag);
for (HashMap<String, String> values : context) {
Set<Map.Entry<String, String>> entries = values.entrySet();
for (Map.Entry<String, String> entry : entries) {
//判断功能
if(entry.getKey().equalsIgnoreCase("packageToScan")){
String value = entry.getValue();
List<String> packages = new ArrayList<>();
if(value.contains(",")){
String[] packageNames = value.split(",");
packages = Arrays.asList(packageNames);
}else{
packages.add(value);
}
// System.out.println(packages);
creatBeanByPaht(packages);
}
}
}
}
if(tag.equals("bean")){
ArrayList<HashMap<String, String>> beans = maps.get(tag);
for (HashMap<String, String> bean : beans) {
Set<Map.Entry<String, String>> es = bean.entrySet();
String className = "";
String classPath = "";
for (Map.Entry<String, String> entry : es) {
if(entry.getKey().equals("id")){
className = entry.getValue();
}
if(entry.getKey().equals("class")){
classPath = entry.getValue();
}
}
try {
// System.out.println(classPath);
Class<?> clazz = Class.forName(classPath);
// System.out.println(classPath + "--" + clazz);
Object obj = clazz.newInstance();
beanMaps.put(className,obj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}