`
eneve520
  • 浏览: 55411 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

    博客分类:
  • XML
阅读更多
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;
}
}
望各位提出意见 !!!
分享到:
评论

相关推荐

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 =================== 第一部分 核心概念 第1章 ASP.NET简介 1.1 ASP.NET的...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    精通Qt4编程(第二版)源代码

    \ 第4章 程序主窗口—— QMainWindow 卢传富 Qt应用程序的主窗口是由多个部件/组件构成的框架,本章通过一个简单文本编辑器的例子,介绍了主窗口的菜单、工具条、中心部件、锚接部件和状态条,并通过Qt设计器绘制和...

    精通qt4编程(源代码)

    \ 第4章 程序主窗口—— QMainWindow 卢传富 Qt应用程序的主窗口是由多个部件/组件构成的框架,本章通过一个简单文本编辑器的例子,介绍了主窗口的菜单、工具条、中心部件、锚接部件和状态条,并通过Qt设计器绘制和...

    java面试题

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    Java语言基础下载

    DOM4J解析实例 412 JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本...

    超级有影响力霸气的Java面试题大全文档

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 做一个最简答web框架 05 MVC模式和MTV模式 06 django的一个简单应用 07 django静态文件之static 08 django的url控制系统 09 django的urlConf补充 第50章 01 django之视图函数的介绍 02 django视图之redirec 03 ...

    java 面试题 总结

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    Ext Js权威指南(.zip.001

    2.9 为本书示例准备一个模板 / 60 2.10 本章小结 / 61 第3章 调试工具及技巧 / 62 3.1 使用firebug进行调试 / 62 3.2 在ie中调试 / 76 3.2.1 使用debugbar和companion.js调试 / 76 3.2.2 使用ietester测试 / ...

Global site tag (gtag.js) - Google Analytics