Возникла проблема. Суть проблемы ниже:
есть xml файл, в файле лежит конфиг следующего содержания:
| Код | <?xml version="1.0"?> <kbe> <config> <root_dir>D:\__Projects\kbe\trunc\web</root_dir> <doc_dir>D:\__Projects\kbe\trunc\web\docs</doc_dir> <dbf_dir>D:\__Projects\kbe\trunc\web\dbf</dbf_dir> <root_url>http://localhost:8084/kbe</root_url> <dbf_url>http://localhost:8084/kbe/dbf</dbf_url> <db_ip>192.168.0.3</db_ip> <db_port>1521</db_port> <db_name>base1</db_name> <db_login>kbe</db_login> <db_passwd>kbe</db_passwd> <eoffice_ip>192.168.0.39</eoffice_ip> <eoffice_port>1521</eoffice_port> <eoffice_name>b01</eoffice_name> <eoffice_login>office</eoffice_login> <eoffice_passwd>qq</eoffice_passwd> </config> </kbe>
|
Есть класс работы с этим файлом:
| Код | package classes;
import java.io.File; import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder;
public class config {
private String config_file_directory = "D:\\__Projects\\kbe\\trunc\\web\\config.xml";
private String getTagValue(String sTag, Element eElement){ NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes(); Node nValue = (Node) nlList.item(0); return nValue.getNodeValue(); }
private void setTagValue(String sTag, String sValue, Element eElement){ NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes(); Node nValue = (Node) nlList.item(0); nValue.setNodeValue(sValue); }
public String getConfigFilePatch(){ return config_file_directory; }
public String getConfigTagvalue(String tag_name){ String res = ""; try{ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(new File(config_file_directory)); doc.getDocumentElement().normalize(); NodeList listOfConf = doc.getElementsByTagName("config"); Node nNode = listOfConf.item(0); if(nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; res = getTagValue(tag_name, eElement); } }catch(Exception ex){ res = "error"; } return res; }
public boolean setConfigTagvalue(String tag_name, String value){ try{ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(new File(config_file_directory)); doc.getDocumentElement().normalize(); NodeList listOfConf = doc.getElementsByTagName("config"); Node nNode = listOfConf.item(0); if(nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; System.out.println("before: "+getTagValue(tag_name, eElement)); setTagValue(tag_name, value, eElement); System.out.println("after: "+getTagValue(tag_name, eElement)); } return true; }catch(Exception ex){ return false; } } }
|
Суть проблемы: чтение из файла проходит корректно и нареканий не вызвает (getConfigTagvalue), но при попытке setConfigTagvalue изменений в файле не происходит, но после выполнения
| Код | t_name = "root_dir"; val = "D:\\__Projects\\kbe\\trunc\\web\\anyadditional"; config cfg = new config(); boolean rr = cfg.setConfigTagvalue(t_name, val);
|
печатет, что изменения прошли:
| Код | before: D:\__Projects\kbe\trunc\web after: D:\__Projects\kbe\trunc\web\anyadditional
|
Ктонибудь сталкивался с подобной проблемой? Есть какиенибудь идеи как это разрешить? алсо, принимаются рекомендации о пересмотре формата хранения конфигурационного файла.
|