千家信息网

如何实现一个读取xml文件内容的类

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何实现一个读取xml文件内容的类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一个读取xml文件内容的类package project
千家信息网最后更新 2026年11月03日如何实现一个读取xml文件内容的类

这篇文章将为大家详细讲解有关如何实现一个读取xml文件内容的类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一个读取xml文件内容的类
package project.util.xml;

import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import org.apache.log4j.*;
import org.jdom.*;
import org.jdom.input.*;

/**
*

Title: 读取xml文件信息


*

Description: 从XML配置文件中获得配置信息。excerpt form jdom。


*

Copyright: Copyright (c) 2004


*

Company: Harmonious


* @author TZL
* @version 1.0
*/

public class XMLReader {
/*
#设置根的输出配置,格式为 "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(XMLReader.class);
protected Element m_RootElement = null;
protected String m_webAppPath = null;

/**
* 构造函数。
* @param xmlFile 要读取的配置文件的绝对路径。
*/
public XMLReader(String xmlFile) {
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(xmlFile));
m_RootElement = doc.getRootElement();
}
catch (IOException ex) {
log.error("XMLReader构造时出现IO错误:" + ex.toString());
}
catch (JDOMException ex1) {
log.error("XMLReader构造时分析XML文件出错:" + ex1.toString());
}
catch (Exception ex) {
log.error("XMLReader 构造出错:" + ex.toString());
}
}

/**
* 构造函数。配置文件必须指定为发布的应用的根目录下的/XmlConfig/Config.xml。
* @param servletObj 随便一个HttpServlet对象。
*/
public XMLReader(HttpServlet servletObj) {
m_webAppPath = servletObj.getServletContext().getRealPath("/");
String configFileName = m_webAppPath + "XmlConfig/Config.xml";

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.xml):" + ex.toString());
}
catch (JDOMException ex1) {
log.error("XMLReader构造时分析XML文件出错(/XmlConfig/Config.xml):" + ex1.toString());
}
catch (Exception ex) {
log.error("XMLReader构造出错(/XmlConfig/Config.xml):" + ex.toString());
}
}

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

/**
* 从配置文件中获得配置信息。
* @param key 要获取的配置名称。
* @param curRootName 查找的起始节点名称,如果为null从根开始查找。
* @return 配置的字符串。
*/
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;
}

/**
* 根据名字获得节点。广度遍历,递归调用。
* @param nodeName 节点的名字。
* @param curRoot 从开始查找的起始节点,如果为null从根开始查找。
* @return 返回从指定节点下找到的第一个节点。如果没有返回null。
*/
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;
}

/**
* 获得指定节点的属性。
* @param elementName 节点的名称。
* @param attName 要获得的属性的名称。
* @return 要查找的属性的值。
*/
public String getElementAtrribute(String elementName, String attName)
{
Element el = getElement(null, elementName);
if (null == el)
return null;

return el.getAttributevalue(attName);
}

}

关于"如何实现一个读取xml文件内容的类"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

文件 配置 节点 内容 信息 名称 属性 根目录 篇文章 路径 应用 函数 名字 时分 更多 服务器 错误 时出 服务 起始 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡 互联网电商科技 互联网科技公司税收优惠 互联网科技论文 互联网科技创新服务 成都铂石互联网科技做什么的 互联网科技与管理 互联网科技革命什么开始 互联网科技如何创业 卓翼科技产业互联网合作 恒生互联网科技业指数调整周期 互联网时代的科技公司 35岁以上互联网科技行业 广州有谷有贝互联网科技有限公司 科技互联网行业投资研究 普陀区互联网教育科技管理办法 西安左小互联网科技有限公司 绵阳真晨互联网科技有限公司 东风日产互联网科技公司叫什么 银川新华互联网科技学校招聘 互联网黑科技 互联网科技活动banner 疫情对互联网科技公司影响 智能科技公司是互联网公司吗 移动互联网科技股 阿大互联网科技有限公司 求路客互联网科技电话 杭州融税互联网科技有限公司 互联网科技创新方面的资料 互联网科技创业有什么好项目
0