以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML源码及示例(仅原创和转载) 』  (http://bbs.xml.org.cn/list.asp?boardid=32)
----  jdom samples (3)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=32&rootid=&id=6533)


--  作者:jlive
--  发布时间:4/7/2004 3:07:00 PM

--  jdom samples (3)
数据库的配置文件,也由xml形式来设制,且能根够条件,动态配置哦
<?xml version="1.0" encoding="gb2312"?>
<!-- ============================================================= -->
<!-- databases connection config xml file  -->
<!-- date: 2004-01-13 17:22-->
<database-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="database-config.xsd">
 <database-type name="Domino" validate="false">
  <driverClassName>lotus.jdbc.domino.DominoDriver</driverClassName>
  <url>jdbc:domino:DB/Server</url>
  <userName>username</userName>
  <password>password</password>
 </database-type>
 <database-type name="Oracle" validate="true">
  <driverClassName>oracle.jdbc.driver.OracleDriver</driverClassName>
  <url>jdbc:oracle:thin:@host:1521:db</url>
  <userName>username</userName>
  <password>password</password>
 </database-type>
 <database-type name="MS SQLSERVER" validate="false">
  <driverClassName>com.microsoft.jdbc.sqlserver.SQLServerDriver</driverClassName>
  <url>jdbc:microsoft:sqlserver://host:1433;DatabaseName=db</url>
  <userName>username</userName>
  <password>password</password>
 </database-type>
 <database-type name="MySQL" validate="false">
  <driverClassName>org.gjt.mm.mysql.Driver</driverClassName>
  <url>jdbc:mysql://host</url>
  <userName>username</userName>
  <password>password</password>
 </database-type>
</database-config>

schema:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by klfdaskl (fasdfdas) -->
<!--W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xs:element name="database-config">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="database-type" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="database-type">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="driverClassName"/>
    <xs:element ref="url"/>
    <xs:element ref="userName"/>
    <xs:element ref="password"/>
   </xs:sequence>
   <xs:attribute name="name" type="xs:string" use="required"/>
   <xs:attribute name="validate" use="required">
    <xs:simpleType>
     <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="false"/>
      <xs:enumeration value="true"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
 <xs:element name="driverClassName">
  <xs:simpleType>
   <xs:restriction base="xs:string">
    <xs:enumeration value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
    <xs:enumeration value="lotus.jdbc.domino.DominoDriver"/>
    <xs:enumeration value="oracle.jdbc.driver.OracleDriver"/>
    <xs:enumeration value="org.gjt.mm.mysql.Driver"/>
   </xs:restriction>
  </xs:simpleType>
 </xs:element>
 <xs:element name="password" type="xs:int"/>
 <xs:element name="url">
  <xs:simpleType>
   <xs:restriction base="xs:string">
    <xs:enumeration value="jdbc:domino:DB/Server"/>
    <xs:enumeration value="jdbc:microsoft:sqlserver://host:1433;DatabaseName=db"/>
    <xs:enumeration value="jdbc:mysql://javasoft"/>
    <xs:enumeration value="jdbc:oracle:thin:@host:1521:db"/>
   </xs:restriction>
  </xs:simpleType>
 </xs:element>
 <xs:element name="userName" type="xs:string"/>
</xs:schema>


java原代码:


package com.sz.xml;

import com.sz.xml.log.Log;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

import org.jdom.*;
import org.jaxen.XPath;
import org.jaxen.XPathSyntaxException;
import org.jaxen.JaxenException;
import org.jaxen.jdom.JDOMXPath;

public class DatabaseXmlConfig {
  private String driverClassName;
  private String url;
  private String userName;
  private String password;
  private String fileName = "database-config.xml";
  private final String nodeTag = "database-type";
  private Document document;
  private XPath xpath;
  private String sxpath = "/database-config/database-type[@validate='true']";

  public DatabaseXmlConfig() {
    getXmlData(fileName);
  }

  public DatabaseXmlConfig(String fileName) {
    if (fileName != null)
      this.fileName = fileName;
    getXmlData(fileName);
  }

  private void getXmlData(String fileName) {
    List list =null;
    document = GenerateXmlDom.GenerateDomFromXml(fileName, false);
    try{
      xpath = new JDOMXPath(sxpath);
      Element element = (Element) xpath.selectSingleNode(document);
      if(element == null){
        Log.log("DatabaseXmlConfig.getXmlData(String fileName)  ","Err:can't find element; is null");
        return ;
      }else{
        driverClassName = element.getChild("driverClassName").getTextTrim();
        url = element.getChild("url").getTextTrim();
        userName = element.getChild("userName").getTextTrim();
        password = element.getChild("password").getTextTrim();
      }
    /*
      list = xpath.selectNodes(document);
      for(Iterator iter = list.iterator();iter.hasNext();){

      }
      */
    }catch(JaxenException je){
      Log.log("DatabaseXmlConfig.getXmlData :",je.getMessage());
      je.printStackTrace();
    }
  }


  public String getDriverClassName() {
    return this.driverClassName;
  }

  public String getUrl() {
    return this.url;
  }

  public String getUserName() {
    return this.userName;
  }

  public String getPassword() {
    return this.password;
  }

  public static void main(String args[]){
    DatabaseXmlConfig dg = new DatabaseXmlConfig();
    System.out.println(dg.getDriverClassName());
        System.out.println(dg.getUrl());
            System.out.println(dg.getUserName());
                System.out.println(dg.getPassword());
  }
}    


--  作者:struggle
--  发布时间:6/15/2004 8:51:00 AM

--  
谢谢楼主!!!
楼主能否加进去一些注释啊?真的越来越看不太董了!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
8,769.531ms