Java Tools

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 16 評論 :: 0 Trackbacks
          一個讀取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.*;

          /**
          * <p>Title: <font color="steelblue" size="10">讀取xml文件信息</font></p>
          * <p>Description: <font color="steelblue">從XML配置文件中獲得配置信息。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 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;

          /**
          * <font color="orange">構造函數。</font>
          * @param xmlFile <font color="steelblue">要讀取的配置文件的絕對路徑。</font>
          */
          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());
          }
          }

          /**
          * <font color="orange">構造函數。配置文件必須指定為發布的應用的根目錄下的/XmlConfig/Config.xml。</font>
          * @param servletObj <font color="steelblue">隨便一個HttpServlet對象。</font>
          */
          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());
          }
          }

          /**
          * <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);
          }

          }
          posted on 2007-07-03 14:55 和田雨 閱讀(453) 評論(0)  編輯  收藏 所屬分類: J2SE 、案例
          主站蜘蛛池模板: 宽甸| 南乐县| 额敏县| 衡阳市| 定结县| 平罗县| 两当县| 牙克石市| 长汀县| 东乡族自治县| 丽江市| 留坝县| 清涧县| 当阳市| 彩票| 娱乐| 海南省| 焉耆| 法库县| 高邮市| 辽宁省| 太康县| 庄河市| 日喀则市| 峨眉山市| 南昌县| 开阳县| 屯留县| 临潭县| 湖北省| 大荔县| 涞水县| 如皋市| 阳山县| 台北市| 张家川| 梁平县| 临桂县| 马关县| 金阳县| 延川县|