無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
          如果我們有下面的一個XML文件,可以把它想象成一個Relation Database中的Table, 這個XML文件就是一個名字為managers的關系表,而一個<manager>所包含的就是一條記錄(Record),而manager中的service和implementation就是一個個的欄位(Field) !

          managers table
           +  service implementation
          net.csdn.blog.xport.IDBConnectionManager net.csdn.blog.xport.impl.DBConnectionManagerCommonImpl
          net.csdn.blog.xport.IDomainIdentify net.csdn.blog.xport.impl.DomainIdentifyImpl

          所以,在程序中,可以用類似Table Query的方式來讀取XML節點(Node)上面的屬性值!

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE managers SYSTEM "manager-config.dtd">
          <managers>
          <manager name="DBConnectionManager" >
          <service>net.csdn.blog.xport.IDBConnectionManager</service>
          <implementation>net.csdn.blog.xport.impl.DBConnectionManagerCommonImpl</implementation>
          </manager>
          <manager name="NTAccountIdendify" >
          <service>net.csdn.blog.xport.IDomainIdentify</service>
          <implementation>net.csdn.blog.xport.impl.DomainIdentifyImpl</implementation>
          </manager>
          </managers>

          按照下面的代碼讀取:

          // 查找以manager作為tag標記,屬性中存在name且屬性值為"DBConnectionManager"的
          // XML節點, 并返回此節點的DOM Element對象!
          // 類似name字段為PK值,且name="DBConnectionManager"
          managerElement
          = XMLFileUtil.findElement(xmlDomContent.getRootElement(),
          "manager",
          "name",
          "DBConnectionManager");
          if (managerElement != null) {
          //取得Element中的implementation屬性對象...
          serviceImplElement = managerElement.element("implementation");
          if (serviceImplElement != null) {
          //取這個屬性的值...
          serviceImplClassString = serviceImplElement.getText();
          }
          }

          Source of XML Utility Class:

          /*

          * @(#)XMLFileUtil.java 1.0 2004/12/20
          *
          * Copyright 2004 Shark Wang, All rights reserved.

          */

          package net.csdn.blog.xport;

          import java.net.URL;
          import java.util.Iterator;

          import org.apache.log4j.LogManager;
          import org.apache.log4j.Logger;
          import org.dom4j.Attribute;
          import org.dom4j.Document;
          import org.dom4j.Element;
          import org.dom4j.io.SAXReader;

          /**
          * The <code>XmlUtil</code> class supported your code to read/write xml
          * data from the file. all methods in this class depend on <code>dom4j</code>.
          *
          *
          @author Shark Wang
          *
          @version 1.0, 2004/12/20
          *
          @since Tutorial 1.0
          */

          public class XMLFileUtil {

          private static Logger logger = LogManager.getLogger(XMLFileUtil.class);

          /**
          * read xml content from some file, and load xml data into the
          * Document object.
          *
          *
          @param filePath String
          *
          @return Document
          */

          public static Document LoadXmlFile(String filePath) {

          /* marked by Shark Wang
          *****************************************************************
          //get resolver to ignore the DTD validation
          EntityResolver resolver = new EntityResolver() {
          public InputSource resolveEntity(String publicId,
          String systemId) {
          return new InputSource(new StringBufferInputStream(""));
          }
          };
          //create reader
          SAXReader reader = new SAXReader();
          //set reader attribute to ignore DTD validation
          reader.setEntityResolver(resolver);
          reader.setValidation(false);
          reader.setIncludeExternalDTDDeclarations(false);
          reader.setIncludeInternalDTDDeclarations(false);
          *******************************************************************
          */

          SAXReader reader =
          new SAXReader();
          //try to load xml data into Document object
          Document doc = null;
          try {
          String urlString =
          null;
          if (filePath.startsWith("/")) {
          urlString = "file://" + filePath;
          }
          else {
          urlString = "file:///" + filePath;
          }
          logger.debug("XML File's URL :" + urlString);
          doc = reader.read(
          new URL(urlString));
          }
          catch (Exception ex) {
          logger.info("Can not load " + filePath);
          logger.debug(ex.getMessage(), ex);
          }
          //return Document object
          return doc;
          }

          /**
          * Get attribute value by name for some xml element.
          *
          *
          @param element Element
          *
          @param attributeName String
          *
          @return String
          */

          public static String getAttributeValue(Element element,
          String attributeName) {
          String attributeValue =
          null;
          for (Iterator i = element.attributeIterator(); i.hasNext(); ) {
          Attribute attribute = (Attribute) i.next();
          if (attribute.getName().equals(attributeName)) {
          attributeValue = (String) attribute.getData();
          break;
          }
          }
          return attributeValue;
          }

          public static Element findElement(Element searchedElement,
          String targetNodePrefix,
          String targetNodeAttributeName,
          String targetNodeAttributeValue) {
          Element elementTarget =
          null;
          for (Iterator i = searchedElement.elementIterator(targetNodePrefix);
          i.hasNext(); ) {
          Element element = (Element) i.next();
          String strManagerName =
          XMLFileUtil.getAttributeValue(element,
          targetNodeAttributeName);
          if (strManagerName.equals(targetNodeAttributeValue)) {
          elementTarget = element;
          break;
          }
          }
          return elementTarget;
          }

          private XMLFileUtil() {
          }
          }


          凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
          、轉載請注明來處和原文作者。非常感謝。

          posted on 2006-01-06 17:08 草兒 閱讀(1611) 評論(1)  編輯  收藏 所屬分類: Java編程經驗談

          Feedback

          # re: [Java]寫了一個Java讀取XML文件的工具類 2014-11-25 17:17 zuidaima
          java工具類源代碼下載:http://zuidaima.com/share_topic/k%E8%84%9A%E6%9C%AC%E5%92%8C%E5%B7%A5%E5%85%B7-p1-s1.htm  回復  更多評論
            

          主站蜘蛛池模板: 大埔县| 柏乡县| 稷山县| 桐庐县| 民和| 祁东县| 廊坊市| 民县| 新蔡县| 石屏县| 安平县| 三河市| 灵寿县| 邢台县| 浮山县| 盐城市| 顺平县| 洛隆县| 柘城县| 集贤县| 肇州县| 新疆| 长岭县| 特克斯县| 开江县| 获嘉县| 阿克陶县| 桂阳县| 根河市| 雷州市| 怀仁县| 巧家县| 武义县| 潮安县| 青龙| 晋州市| 和林格尔县| 达尔| 庄河市| 苏尼特右旗| 丹棱县|