JAVA中用XML实现INI文件格式的解决方案
考试吧JAVA站整理收集;
要用到XML记录用户注册的数据库连接地址、端口等信息,最开始想用java的propertie类来完成。但propertie不支持[小结名--键值名--键值]这种结构,如果要记录用户注册的多个数据库信息的话,propertie中就必须用[小结名.键值名=键值]这种格式进行记录,后来用到xml,完成了类似ini文件读取和保存的功能,删除功能目前还没做,要实现很简单,所以就没包含在代码里面了。
162.105.167.4
5000
cp850
Sybase
BB_CRM
162.105.167.2
7000
cp850
Sybase
JYGS_JXC
162.105.167.4
5000
cp850
Sybase
BB_CRM
162.105.167.2
7000
cp850
Sybase
JYGS_JXC
||| 其中CRM和JYGS是数据库连接名,下面的子节点有IP、端口、连接字符集、数据库类型、缺省登录的数据库。
162.105.167.4
5000
cp850
Sybase
BB_CRM
162.105.167.2
7000
cp850
Sybase
JYGS_JXC
162.105.167.4
5000
cp850
Sybase
BB_CRM
162.105.167.2
7000
cp850
Sybase
JYGS_JXC
其中CRM和JYGS是数据库连接名,下面的子节点有IP、端口、连接字符集、数据库类型、缺省登录的数据库。 其中CRM和JYGS是数据库连接名,下面的子节点有IP、端口、连接字符集、数据库类型、缺省登录的数据库。
程序代码
程序代码view plaincopy to clipboardprint?
import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class ReadWriteXML {
public ReadWriteXML(String FileName){
this.FileName = FileName;
try{
||| bulider = factory.newDocumentBuilder();doc = bulider.parse(FileName);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @param SectionName 小结名
* @param KeyName 键值名
* @return 返回键值(String类型)
*/
public String ReadXML(String SectionName,String KeyName){
Element root = doc.getDocumentElement();
NodeList SectionNodeList = root.getChildNodes();
for(int i = 0;i
Node SectionNode = SectionNodeList.item(i);
if(SectionNode.getNodeName().trim().equals(SectionName)){
NodeList KeyNodeList = SectionNode.getChildNodes();
for(int j = 0;j
Node KeyNode = KeyNodeList.item(j);
if(KeyNode.getNodeName().trim().equals(KeyName)){
if(KeyNode instanceof Element){
Element KeyElement = (Element)KeyNode;
Value = KeyElement.getTextContent();
}
}
}
}
}
return Value;
}
/**
* @param SectionName 小结名
* @param KeyName 键值名
* @param KeyValue 键值
* 程序先判断了小结是否存在,如果不存在,则创建新的小结,如果存在,则进一步判断键值名是否存在,
* 如果键值名不存在,这在小结下创建新的键值名和键值,如果键值名存在,则直接修改键值。
*/
public void WriteXML(String SectionName,String KeyName,String KeyValue){
//doc.normalize();
Element rootElement = doc.getDocumentElement();
NodeList SectionNodeList = rootElement.getChildNodes();
for(int i = 0;i < SectionNodeList.getLength();i++){
if(SectionNodeList.item(i) instanceof Element){
if (SectionNodeList.item(i).getNodeName().equals(SectionName)){
isSectionExisted = true;
NodeList KeyNodeList = SectionNodeList.item(i).getChildNodes();
for(int j = 0;j < KeyNodeList.getLength();j++){
if(KeyNodeList.item(j) instanceof Element){
if(KeyNodeList.item(j).getNodeName().equals(KeyName)){
KeyNodeList.item(j).setTextContent(KeyValue);
SaveXML(FileName);
return;
}else{
isKeyExisted = false;
}
}
}
if(isKeyExisted == false){
||| Element KeyElement = doc.createElement(KeyName);KeyElement.setTextContent(KeyValue);
SectionNodeList.item(i).appendChild(KeyElement);
SaveXML(FileName);
return;
}
}else{
isSectionExisted = false;
}
}
}
if(isSectionExisted == false){
Element SectionElement = doc.createElement(SectionName);
Element KeyElement = doc.createElement(KeyName);
KeyElement.setTextContent(KeyValue);
SectionElement.appendChild(KeyElement);
rootElement.appendChild(SectionElement);
SaveXML(FileName);
}
}
/**
* @param SectionName 小结名
* @return 根据小结名删除小结,目前还没有写,很简单的。
*/
public void DelXML(String SectionName){
}
/**
* @param FielName 文件名
* @ 保存文件
*/
public void SaveXML(String FileName){
try{
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult rs = new StreamResult(FileName);
tf.transform(source, rs);
}catch(Exception e){
e.printStackTrace();
}
}
private DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
private DocumentBuilder bulider;
private Document doc;
private String Value;
private String FileName;
boolean isSectionExisted;
boolean isKeyExisted;
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>