论坛首页 入门技术论坛

DOM4J读XML,可实现自定义MVC框架(一)

浏览 1752 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-16   最后修改:2009-09-08
mvc_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config-mvc>
<actions>
<action input="/adduser"
inkRealize="ccom.ray.biz.inkrealize.AddUserAction1"
ink="com.ray.biz.ink.Action1"
success="/index1.jsp"
fail="/fail1.jsp"
>
</action>
<action input="/login.jsp2"
inkRealize="com.roy.struts.action.LoginAction2"
ink="com.roy.struts.action2"
success="/index2.jsp"
fail="/fail2.jsp"
>
</action>
</actions>
</config-mvc>

package com.ray.mvc.xmlreader;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.ray.mvc.pojo.ActionModel;
/**
* 功能:使用DOM4J加载xml文件,并获取action属性列表
* 时间:2009年6月14日
* @author Ray
* @version 1.0.1
* */
public class DOM4JReadXml {
//单例模式
private static DOM4JReadXml instance = new DOM4JReadXml();
//xml文件路径
private static final String FILE_NAME="/xml/mvc_config.xml";
private Document doc;
/**
* 构造函数
* 读取xml文件
* */
public  DOM4JReadXml(){
//如果doc 为空
if(doc==null){
//通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
// File file = new File(FILE_NAME);
// //测试此抽象路径名表示的文件是否是一个标准文件
// System.out.println("file.isFile()="+file.isFile());
// if(!file.isFile()){//如果不是标准文件,抛出异常
// try {
// throw new IOException("Config file is not exist. " + FILE_NAME);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }else{
//创建SAXReader 实例
SAXReader saxReader = new SAXReader();
//设置编码为utf-8
saxReader.setEncoding("utf-8");
try {
// doc =saxReader.read(file);
doc = saxReader.read(getClass().getResourceAsStream(FILE_NAME));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// }
}
// new XmlDBReader().getXML();
}
/**
  * 获得xml文件的属性列表
  * @return list
  * @throws Exception
  */
public  List getAttributList(){
  List list=new ArrayList();
  //获取到 xml文件的actions  节点
  Element actions = (Element) doc.selectSingleNode("/config-mvc/actions");
  Iterator iterator = actions.elementIterator("action");
 
  while(iterator.hasNext()){//如果仍有元素可以迭代,则返回 true
   Element action = (Element) iterator.next();
   //创建ActionModel 实例
   ActionModel model=new ActionModel();
//    System.out.println("input="+action.attributeValue("input"));
//    System.out.println("ink="+action.attributeValue("ink"));
//      System.out.println("inkRealize="+action.attributeValue("inkRealize")); 
//      System.out.println("fail="+action.attributeValue("fail")); 
//      System.out.println("success="+action.attributeValue("success")); 
//      System.out.println("-----------------------------------------------");
   model.setInput(action.attributeValue("input"));
   model.setInk(action.attributeValue("ink"));
   model.setInkRealize(action.attributeValue("inkRealize"));   
   model.setFail(action.attributeValue("fail"));
   model.setSuccess(action.attributeValue("success"));   
   list.add(model);
  }
  return list;
}

public static DOM4JReadXml getInstance(){
return instance;
}
}
望各位提出意见 !!!
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics