悟心

          成功不是將來(lái)才有的,而是從決定去做的那一刻起,持續(xù)累積而成。 上人生的旅途罷。前途很遠(yuǎn),也很暗。然而不要怕。不怕的人的面前才有路。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            93 隨筆 :: 1 文章 :: 103 評(píng)論 :: 0 Trackbacks
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;

          import org.dom4j.Document;
          import org.dom4j.DocumentException;
          import org.dom4j.Element;
          import org.dom4j.XPath;
          import org.dom4j.io.SAXReader;

          /**
           * 讀取有命名空間的XML(支持節(jié)點(diǎn)讀取不完整)
           * 
          @author Ai Bo
           * 
          @version 1.3.1 Date 2011-12-14
           
          */

          public class Dom4jFactory {
              
          private SAXReader reader = new SAXReader();
              
          private Document document;
              
          private static Element root;
              
          private static Map<String, String> xmlMap = new HashMap<String, String>();

              
          public Dom4jFactory(String path) {
                  
          super();
                  
          try {
                      document 
          = reader.read(path);
                      root 
          = document.getRootElement();
                      String defaultNamespace 
          = root.getNamespaceURI();
                      xmlMap.put(
          "default", defaultNamespace);
                  }
           catch (DocumentException e) {
                      e.printStackTrace();
                  }

              }


              
          public static List<?> getSelectNodes(String arg0) {
                  XPath selector 
          = root.createXPath("//default:" + arg0);
                  selector.setNamespaceURIs(xmlMap);
                  
          return selector.selectNodes(root);
              }

              
              @SuppressWarnings(
          "unchecked")
              
          public <T> T getSelectObject(String arg0){
                  List
          <?> selectNodes = getSelectNodes(arg0);
                  
          if(selectNodes.size()==1){
                      
          return (T) selectNodes.get(0);
                  }
          else{
                      
          return null;
                  }

              }

          }

           XML文件:

          <?xml version="1.0" encoding="UTF-8"?>
          <inputs xmlns="http://input.abio.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://input.abio.com.cn http://www.abio.com.cn/sproinput.xsd">
             
          <columns>2</columns>
             
          <input id="id"  datatype="String" minlen="1" maxlen="32" casetype="U" width="40" name_zh="數(shù)據(jù)代碼" inputtype="text" editable="2" gridwidth="3"></input>
             
          <input id="organNo"  datatype="integer" nullable="false" minlen="1" maxlen="20" casetype="U" width="40" name_zh="機(jī)構(gòu)編號(hào)" inputtype="text" editable="2"></input>
             
          <input id="organName"  datatype="String" nullable="false" minlen="1" maxlen="20" casetype="U" width="40" name_zh="機(jī)構(gòu)名稱" inputtype="text" editable="2"></input>
             
          <input id="pOrganNo"  datatype="String" nullable="false" minlen="1" maxlen="20" casetype="U" width="40" name_zh="父機(jī)構(gòu)編號(hào)" inputtype="text" editable="2"></input>
             
          <input id="effTime"  datatype="Date" validator="Date" nullable="false" format="yyyy-MM-dd" minlen="8" maxlen="8" casetype="U" width="40" name_zh="有效日期" inputtype="date" editable="2"></input>
             
          <input id="createUser"  datatype="String" minlen="1" maxlen="20" casetype="U" width="40" name_zh="創(chuàng)建人" inputtype="text" editable="2"></input>
             
          <input id="createTime"  datatype="Date" minlen="10" maxlen="20" casetype="U" width="40" name_zh="創(chuàng)建日期" editable="2" inputtype="text"></input>
             
          <input id="updateUser"  datatype="String"  minlen="1" maxlen="20" casetype="U" width="40" name_zh="更新人" inputtype="text" editable="2"></input>
             
          <input id="updateTime"  datatype="Date" minlen="10" maxlen="20" casetype="U" width="40" name_zh="更新日期" editable="2" inputtype="text"></input>
          </inputs>

          讀取XML單個(gè)節(jié)點(diǎn)(inputs下的columns節(jié)點(diǎn)):

          Dom4jFactory df = new Dom4jFactory("c:\\test.xml");
                  DefaultElement columnsitem 
          = df.getSelectObject("columns");

          讀取XML inputs節(jié)點(diǎn)下所有的input節(jié)點(diǎn):

          Dom4jFactory df = new Dom4jFactory("c:\\test.xml");
                      List
          <DefaultElement> inputNodes = df.getSelectNodes("input");




           

          posted on 2011-12-14 16:39 艾波 閱讀(2563) 評(píng)論(2)  編輯  收藏 所屬分類: Java

          評(píng)論

          # re: Dom4jFactory(讀取包含命名空間的XML(支持節(jié)點(diǎn)讀取不完整)) 2011-12-15 09:04 李剛
          你這個(gè)是啥啊 連個(gè)解釋都沒(méi)有的  回復(fù)  更多評(píng)論
            

          # re: Dom4jFactory(讀取包含命名空間的XML(支持節(jié)點(diǎn)讀取不完整))添加使用實(shí)例 2011-12-22 16:08 艾波
          已經(jīng)添加了使用實(shí)例,謝謝你的意見(jiàn)@李剛
            回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 武城县| 乐陵市| 宾阳县| 建瓯市| 尉氏县| 罗山县| 扶绥县| 江城| 武夷山市| 贡觉县| 望城县| 横峰县| 庐江县| 凤冈县| 巴南区| 玉龙| 梁河县| 沅江市| 当阳市| 闸北区| 屯留县| 容城县| 东平县| 陈巴尔虎旗| 临安市| 临湘市| 榆社县| 兴业县| 永川市| 望奎县| 宜黄县| 武川县| 蒲江县| 上杭县| 蚌埠市| 新巴尔虎右旗| 渝中区| 高青县| 兴国县| 阿克苏市| 高碑店市|