dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>java>jsp>文章内容
一个读取xml文件内容的类
来源:www.web-xy.com     作者:    
一个读取文件内容的类 
package project.util.;

import .io.*;
import .util.*;
import x..http.*;
import org.apache.log4j.*;
import org.jdom.*;
import org.jdom.input.*;

/**
* <p>Title: <font color="steelblue" size="10">读取文件信息</font></p>
* <p>Description: <font color="steelblue">从配置文件中获得配置信息。excerpt form jdom。</font></p>
* <p>Copyright: <font color="steelblue">Copyright (c) 2004</font></p>
* <p>Company: <font color="steelblue">Harmonious</font></p>
* @author <font color="steelblue">TZL</font>
* @version <font color="steelblue">1.0</font>
*/

public class Reader {
/*
#设置根的输出配置,格式为 "info [2004-05-01 22:35:30] [name]logname(b.c) [line] 86 msg-->log信息"
log4j.rootLogger=DEBUG, rootAppender
log4j.appender.rootAppender=org.apache.log4j.RollingFileAppender
log4j.appender.rootAppender.File=e:/MapXtremeSmpl.log
log4j.appender.rootAppender.MaxFileSize=1000KB
log4j.appender.rootAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.rootAppender.layout.ConversionPattern=%-5p [%d{yyyy-mm-dd HH:mm:ss}] [name] %c{2} [line] %L msg--> %m%n
*/
static public Logger log = Logger.getLogger(Reader.class);
protected Element m_RootElement = null;
protected String m_webAppPath = null;

/**
* <font color="orange">构造。</font>
* @param File <font color="steelblue">要读取的配置文件的绝对路径。</font>
*/
public XMLReader(String File) {
m_webAppPath = null;
try {
PatternLayout layout = new PatternLayout("%-5p %d{yyyy-MM-dd HH:mm:ss} [name] %c{2} [line] %L [msg] %m%n");
ConsoleAppender appender = new ConsoleAppender(/*new SimpleLayout(),*/layout, "System.err");
log.addAppender(appender);

SAXBuilder builder = new SAXBuilder();
document.nbspdoc = null;
doc = builder.build(new FileInputStream(File));
m_RootElement = doc.getRootElement();
}
catch (IOException ex) {
log.error("Reader构造时出现IO错误:" + ex.toString());
}
catch (JDOMException ex1) {
log.error("XMLReader构造时分析文件出错:" + ex1.toString());
}
catch (Exception ex) {
log.error("Reader 构造出错:" + ex.toString());
}
}

/**
* <font color="orange">构造。配置文件必须指定为发布的应用的根目录下的/XmlConfig/Config.。</font>
* @param servletObj <font color="steelblue">随便一个Http对象。</font>
*/
public Reader(HttpServlet Obj) {
m_webAppPath = servletObj.getContext().getRealPath("/");
String configFileName = m_webAppPath + "XmlConfig/Config.";

try {
PatternLayout layout = new PatternLayout("%-5p %d{yyyy-MM-dd HH:mm:ss} [name] %c{2} [line] %L [msg] %m%n");
ConsoleAppender appender = new ConsoleAppender( /*new SimpleLayout(),*/layout, "System.err");
log.addAppender(appender);

SAXBuilder builder = new SAXBuilder();
document.nbspdoc = null;
doc = builder.build(new FileInputStream(configFileName));
m_RootElement = doc.getRootElement();
}
catch (IOException ex) {
log.error("XMLReader构造时出现IO错误(/XmlConfig/Config.):" + ex.toString());
}
catch (JDOMException ex1) {
log.error("XMLReader构造时分析XML文件出错(/XmlConfig/Config.):" + ex1.toString());
}
catch (Exception ex) {
log.error("XMLReader构造出错(/XmlConfig/Config.):" + ex.toString());
}
}

/**
* <font color="orange">web应用发布在web服务器的绝对路径根目录,最后已经有目录分割符。</font>
* @return <font color="tomato">返回web应用发布在web服务器的绝对路径的根目录。</font>
*/
public String getWebAppPath() {
return m_webAppPath;
}

/**
* <font color="orange">从配置文件中获得配置信息。</font>
* @param key <font color="steelblue">要获取的配置名称。</font>
* @param curRootName <font color="steelblue">查找的起始节点名称,如果为null从根开始查找。</font>
* @return <font color="tomato">配置的字符串。</font>
*/
public String getElementvalue(String curRootName, String key) {
String value = null;
Element curRoot = getElement(null, curRootName);
if (null == curRoot) {
curRoot = m_RootElement;
}
Element keyNode = getElement(curRoot, key);
if (null != keyNode) {
value = keyNode.getTextTrim();

}
return value;
}

/**
* <font color="orange">根据名字获得节点。广度遍历,递归调用。</font>
* @param nodeName <font color="steelblue">节点的名字。</font>
* @param curRoot <font color="steelblue"> 从开始查找的起始节点,如果为null从根开始查找。</font>
* @return <font color="tomato">返回从指定节点下找到的第一个节点。如果没有返回null。</font>
*/
private Element getElement(Element curRoot, String nodeName) {
Element retElement = null;

if (null == nodeName)
return m_RootElement;

if (null == curRoot) {
curRoot = m_RootElement;
}

if (null != curRoot) {
retElement = curRoot.getChild(nodeName);
if (null == retElement) {
List nestElements = curRoot.getChildren();
Iterator iterator = nestElements.iterator();
while (iterator.hasNext() && null == retElement) {
retElement = getElement( (Element) iterator.next(), nodeName);
}
}
}

return retElement;
}

/**
* <font color="orange">获得指定节点的。</font>
* @param elementName <font color="steelblue">节点的名称。</font>
* @param attName <font color="steelblue">要获得的的名称。</font>
* @return <font color="tomato">要查找的的值。</font>
*/
public String getElementAtrribute(String elementName, String attName)
{
Element el = getElement(null, elementName);
if (null == el)
return null;

return el.getAttributevalue(attName);
}

}

 

 

上一篇:jsp读取大对象CLOB并生成xml文件示例   下一篇:JSP中读文件和写文件的例子
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·JSP入门实例教程
·什么是Servlet
·JSP常用内置对象使用说明
·JSP自定义标签由浅到深详细讲解
·JSP自定义标签由浅到深详细讲解
·Java Servlet技术
·Javax.servlet API的特征
·一个简单的jsp注册页面
·JSTL操作数据库示例
·JSP入门实例教程13-MVC模式
·JSP入门实例教程12-jstl处理数
·JSP入门实例教程11-jstl处理xml
  相关文章
·jsp读取大对象CLOB并生成xml文件
·JSP中读文件和写文件的例子
·提升JSP应用程序的七大绝招
·用JDOM包实现生成XML文件的简单
·深入剖析JSP和Servlet对中文的处
·下一代WEB开发模型
·Taglib 原理和实现之什么是Tagli
·JB8一个jsp文件编写、保存BUG的
·Taglib 原理和实现之支持El表达
·Java web应用开发概览
·Taglib 原理和实现之嵌套和属性
·jsp安全问题及其解决建议
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763