1定义多个AutoIncrease特征的key,但都后缀一个序号,然后在程序代码中再去分别划分来调用如:AutoIncrease1、AutoIncrease2,……
2定义一个AutoIncrease的key,将value存储为多值的形式,以自定义分隔符隔开,同要需要在程度代码中再调用时将其分离开,如:分隔符用逗号:1,2,3,……,调用时使用Split(',')来分离
再有一种方法就是在脱离appconfig这种特定XML规则的文件中存储,此方法可自定义数据存储结构JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对XML文件的读取,是我们首先要解决的问题。
一、XML文件
这个示例文件包括了用来打开ORACLE数据库的各种参数
<xml version="10" encoding="UTF-8">
<dbmsg>
<dbinfo>
<drivername>oraclejdbcdriverOracleDriver</drivername>
<sConnStr>jdbc:oracle:thin:@118822580:1521:VOUCHERDB</sConnStr>
<username>SYS AS SYSDBA</username>
<password>voucherdb</password>
</dbinfo>
</dbmsg>
二、编写类名为ReadXml的类,用于解析XML文件
我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。
package voucherbasic;
import javaioFileInputStream;
import javaioFileNotFoundException;
import javaioIOException;
import javaioInputStream;
import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import javaxxmlparsersParserConfigurationException;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNode;
import orgw3cdomNodeList;
import orgxmlsaxSAXException;
public class ReadXml {
private String drivername;
private String sConnStr;
private String username;
private String password;
public String getDrivername() {
return drivername;
}
public String getSConnStr() {
return sConnStr;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setDrivername(String drivername) {
thisdrivername = drivername;
}
public void setSConnStr(String connStr) {
sConnStr = connStr;
}
public void setUsername(String username) {
thisusername = username;
}
public void setPassword(String password) {
thispassword = password;
}
public ReadXml(String fileName){
DocumentBuilderFactory domfac=DocumentBuilderFactorynewInstance();
try {
DocumentBuilder dombuilder=domfacnewDocumentBuilder();
InputStream is=new FileInputStream(fileName);
Document doc=dombuilderparse(is);
Element root=docgetDocumentElement();
NodeList dbinfo=rootgetChildNodes();
if(dbinfo!=null){
for(int i=0;i<dbinfogetLength();i++){
Node db=dbinfoitem(i);
for(Node node=dbgetFirstChild();node!=null;node=nodegetNextSibling()){
if(nodegetNodeType()==NodeELEMENT_NODE){
if(nodegetNodeName()equals("drivername")){
setDrivername(nodegetFirstChild()getNodeValue());
}
if(nodegetNodeName()equals("sConnStr")){
setSConnStr(nodegetFirstChild()getNodeValue());
}
if(nodegetNodeName()equals("username")){
setUsername(nodegetFirstChild()getNodeValue());
}
if(nodegetNodeName()equals("password")){
setPassword(nodegetFirstChild()getNodeValue());
}
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。
三、如何获取XML文件全路径并读取配置参数
获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。
1在servlet中获取XML文件的全路径并读取配置参数
程序片段String dirPath = getServletContext()getRealPath( "/WEB-INF");
String fileName = dirPath + "/connxml";
ReadXml xm = new ReadXml(fileName);
String DriverName = xmgetDrivername();
String connStr = xmgetSConnStr();
String user = xmgetUsername();
String pas = xmgetPassword();
将这段程序添加到servlet中dopost()之后即可完成参数的读取
2在单独的JAVA类中获取全路径并读取配置参数
程序片段
String dirpath = SystemgetProperty("userdir");
String xmlFile = dirpath + "/WebRoot/WEB-INF/connxml";
ReadXml rdxml = new ReadXml(xmlFile);
String driverName = rdxmlgetDrivername();
String sConnStr = rdxmlgetSConnStr();
String userName = rdxmlgetUsername();
String passWord = rdxmlgetPassword();
注:配置文件connxml保存在webroot/WEB-INF目录中。如果你用的是android的模拟器的话,有可能有一个问题是:你在调试程序的时候的输入法是android输入法,由模拟器上的小键盘输入才会监听,我遇到这问题,呵呵 如果你已经这样做了,那……有的时候不一定是代码问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)