domxml.java

  1. /**************************************
  2.  * Title:        读取XML配置文件
  3.  * Description:  DOM解析基础类
  4.  * date :        2006-3-22
  5.  * author :      zhanglei
  6.  ***************************************/
  7. package server;
  8. import java.io.*; //Java基础包,包含各种IO操作
  9. import java.util.*; //Java基础包,包含各种标准数据结构操作
  10. import javax.xml.parsers.*; //XML解析器接口
  11. import org.w3c.dom.*; //XML的DOM实现
  12. //import javax.xml.transform.*;
  13. //import javax.xml.transform.dom.DOMSource;
  14. //import javax.xml.transform.stream.StreamResult;
  15. //import java.sql.*;
  16. public class DomXML {
  17.     private Document doc;
  18.     private static Element root;
  19.     public Vector item_Vector;
  20.     private static Element begingItem;
  21.     private NodeList listMy;
  22.     public DomXML(String inFile) throws Exception {
  23.         System.out.println("初始化Dom:" + inFile);
  24.         //为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
  25.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  26.         dbf.setNamespaceAware(true); //new add
  27.         DocumentBuilder db = null;
  28.         try {
  29.             db = dbf.newDocumentBuilder();
  30.         }
  31.         catch (ParserConfigurationException pce) {
  32.             SaveLog.SetInfo("DomXML1:"+pce, 2);//出异常时输出异常信息,然后退出,下同
  33.         }
  34.         doc = null;
  35.         try {
  36.             doc = db.parse(new File(inFile));
  37.             doc.getDocumentElement().normalize(); //new add
  38.         }
  39.         catch (DOMException dom) {
  40.             SaveLog.SetInfo("DomXML2:" + dom.getMessage(), 2);
  41.         }
  42.         catch (IOException ioe) {
  43.             SaveLog.SetInfo("DomXML3:" + ioe, 2);
  44.         }
  45.         //解析XML全过程,先取根元素
  46.         root = doc.getDocumentElement();
  47.     }
  48.     public static Element GetBeginItem(String beginItemName) {
  49.         //设置开始节点位置
  50.         try {
  51.             NodeList items = root.getElementsByTagName(beginItemName);
  52.             begingItem = (Element) items.item(0);
  53.             return begingItem;
  54.         }
  55.         catch (Exception ex) {
  56.             SaveLog.SetInfo("DomXML中GetBeginItem:" + ex, 2);
  57.             return null;
  58.         }
  59.     }
  60.     public int GetItemCount(String beginItemName) {
  61.         //设置开始节点下的子接点数
  62.         try {
  63.             NodeList items = root.getElementsByTagName(beginItemName);
  64.             begingItem = (Element) items.item(0);
  65.             Node nodeitm = items.item(0);
  66.             if (nodeitm.hasChildNodes()) {
  67.                 listMy = nodeitm.getChildNodes();
  68.                 return listMy.getLength();
  69.             }
  70.             return 0;
  71.         }
  72.         catch (Exception ex) {
  73.             SaveLog.SetInfo("DomXML中GetItemCount:" + ex, 2);
  74.             return 0;
  75.         }
  76.     }
  77.     public String GetItemNoName(int itemNo) {
  78.         //获取开始节点下的子接点数的名
  79.         try {
  80.                 Node nodea = listMy.item(itemNo);
  81.                 if (nodea.getNodeName().indexOf("#text") < 0 && nodea.getNodeName() != null) {
  82.                     return nodea.getNodeName() ;
  83.                 }
  84.                return "";
  85.             }
  86.             catch (Exception ex) {
  87.                 SaveLog.SetInfo("DomXML中GetItemNoName:" + ex, 2);
  88.                return "";
  89.             }
  90.         }
  91.         public String GetItemNoVal(int itemNo) {
  92.             //设置开始节点下的子接点数的值
  93.             try {
  94.                     Node nodea = listMy.item(itemNo);
  95.                     if (nodea.getNodeName().indexOf("#text") < 0) {
  96.                         return nodea.getNodeValue() ;
  97.                     }
  98.                     return "";
  99.                 }
  100.                 catch (Exception ex) {
  101.                     SaveLog.SetInfo("DomXML中GetItemNoVal:" + ex, 2);
  102.                     return "";
  103.                 }
  104.         }
  105.         public String GetItemNoAttribute(int itemNo, String sxName) {
  106.             //设置开始节点下的子接点数的属性值
  107.             try {
  108.                     Element nodea = (Element)listMy.item(itemNo);
  109.                     return nodea.getAttribute(sxName);
  110.                 }
  111.                 catch (Exception ex) {
  112.                     SaveLog.SetInfo("DomXML中GetItemNoAttribute:" + ex, 2);
  113.                     return "";
  114.                 }
  115.         }
  116.         public static String GetItemVal(String itemName) {
  117.             //取节点的值
  118.             try {
  119.                 NodeList names = begingItem.getElementsByTagName(itemName);
  120.                 if (names.getLength() == 1) {
  121.                     Element e = (Element) names.item(0);
  122.                     Text t = (Text) e.getFirstChild();
  123.                     return t.getNodeValue();
  124.                 }
  125.                 return "";
  126.             }
  127.             catch (Exception ex) {
  128. //                SaveLog.SetInfo("DomXML中GetItemVal:" + ex, 2);
  129.                 return "";
  130.             }
  131.         }
  132.         //从itemName元素取得属性名为sxName的属性值
  133.         public static String GetItemAttribute(String itemName, String sxName) {
  134.             //取节点的属性
  135.             try {
  136.                 NodeList names = begingItem.getElementsByTagName(itemName);
  137.                 if (names.getLength() == 1) {
  138.                     Element e = (Element) names.item(0);
  139.                     return e.getAttribute(sxName);
  140.                 }
  141.                 return "";
  142.             }
  143.             catch (Exception ex) {
  144.                 SaveLog.SetInfo("DomXML中GetItemAttribute:" + ex, 2);
  145.                 return "";
  146.             }
  147.         }
  148.         public static void main(String[] args) throws Exception {
  149.             //建立测试实例
  150.             String f = "config.xml";
  151.             System.out.println(f);
  152.             DomXML SysXml = new DomXML(f);
  153.             for (int m = 0; m < SysXml.GetItemCount("T_JHXX_GAXXB"); m++) {
  154.                 System.out.println(SysXml.GetItemNoName(m));
  155.             } //初始化向量列表
  156.             DomXML linkXml = new DomXML("links.xml");
  157.             for (int m = 0; m < linkXml.GetItemCount("link1"); m++) {
  158.                 System.out.println(linkXml.GetItemNoVal(m));
  159.                 System.out.println(linkXml.GetItemNoName(m));
  160.             } //初始化向量列表
  161. //      domxml.item_Vector = new Vector();
  162.             DomXML DomXML = new DomXML(f);
  163.   //          DomXML.GetBeginItem("CheckXmlConfig");
  164.    //         System.out.println(SysXml.GetItemVal("CheckAll"));
  165. //                domxml.GetBeginItem("data");
  166.    //         DomXML.GetBeginItem("T_JHXX_GAXXB");
  167.             System.out.println(SysXml.GetItemAttribute("CZRKGMSFHM""itemtype"));
  168.             System.out.println(DomXML.GetItemCount("T_JHXX_GAXXB"));
  169.         }
  170.     }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值