無為

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks

          公告

          與有奉獻(xiàn)精神和分享精神的人做朋友!

          Locations of visitors to this page
          Subscribe by Anothr

          搜索

          •  

          積分與排名

          • 積分 - 581618
          • 排名 - 83

          最新評論

          閱讀排行榜

          如果我們有下面的一個XML文件,可以把它想象成一個Relation Database中的Table, 這個XML文件就是一個名字為managers的關(guān)系表,而一個<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節(jié)點(diǎn)(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>

          按照下面的代碼讀?。?/P>
          // 查找以manager作為tag標(biāo)記,屬性中存在name且屬性值為"DBConnectionManager"的
          // XML節(jié)點(diǎn), 并返回此節(jié)點(diǎn)的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() {
          }
          }


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

          posted on 2006-01-06 17:08 草兒 閱讀(1619) 評論(1)  編輯  收藏 所屬分類: Java編程經(jīng)驗(yàn)談

          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  回復(fù)  更多評論
            

          主站蜘蛛池模板: 西青区| 恩平市| 广水市| 垦利县| 叶城县| 广东省| 沧州市| 银川市| 肃宁县| 弋阳县| 吉木萨尔县| 宁明县| 金川县| 深州市| 乌拉特中旗| 武功县| 石景山区| 嘉禾县| 安阳市| 武隆县| 离岛区| 岚皋县| 湘阴县| 孝昌县| 奉贤区| 通辽市| 宣威市| 确山县| 博野县| 定边县| 江山市| 称多县| 蕲春县| 伊通| 成都市| 隆林| 婺源县| 和平县| 托克逊县| 江阴市| 龙岩市|