java解析XML修改特定项的值然后保存xml文件,求高手帮忙 急需 在线等 10
例如以下hibernate.cfg.xml文件,我要更改hibernate.connection.url,hibernate.connection.username,hi...
例如以下hibernate.cfg.xml文件,我要更改hibernate.connection.url,hibernate.connection.username,hibernate.connection.password的值:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://192.168.1.52:1433;databaseName=Management</property>
<property name="hibernate.connection.username">parkdb</property>
<property name="hibernate.connection.password">123456789</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">50</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">270</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>
<property name="hiberante.cache.use_second_level_cache">false</property>
<property name="hibernate.jdbc.batch_size">50</property>
<property name="hibernate.jdbc.fetch_size">100</property>
<mapping resource="model/InoutPut.hbm.xml"/>
<mapping resource="model/Uid.hbm.xml"/>
<mapping resource="model/Permission.hbm.xml"/>
<mapping resource="model/Staff.hbm.xml"/>
<mapping resource="model/Card.hbm.xml"/>
<mapping resource="model/Dept.hbm.xml"/>
<mapping resource="model/Userright.hbm.xml"/>
<mapping resource="model/Kqms.hbm.xml"/>
<mapping resource="model/SxTime.hbm.xml"/>
<mapping resource="model/Leave.hbm.xml"/>
</session-factory>
</hibernate-configuration>
急需 求给代码谢谢 展开
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://192.168.1.52:1433;databaseName=Management</property>
<property name="hibernate.connection.username">parkdb</property>
<property name="hibernate.connection.password">123456789</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">50</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">270</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>
<property name="hiberante.cache.use_second_level_cache">false</property>
<property name="hibernate.jdbc.batch_size">50</property>
<property name="hibernate.jdbc.fetch_size">100</property>
<mapping resource="model/InoutPut.hbm.xml"/>
<mapping resource="model/Uid.hbm.xml"/>
<mapping resource="model/Permission.hbm.xml"/>
<mapping resource="model/Staff.hbm.xml"/>
<mapping resource="model/Card.hbm.xml"/>
<mapping resource="model/Dept.hbm.xml"/>
<mapping resource="model/Userright.hbm.xml"/>
<mapping resource="model/Kqms.hbm.xml"/>
<mapping resource="model/SxTime.hbm.xml"/>
<mapping resource="model/Leave.hbm.xml"/>
</session-factory>
</hibernate-configuration>
急需 求给代码谢谢 展开
4个回答
展开全部
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public static void main(String[] args) throws Exception {
SAXReader sax = new SAXReader();
//假设你的xml是放在D盘下的叫做a.xml的文件
File file = new File("D:\\a.xml");
Document doc = sax.read(new FileInputStream(file));
Element root = doc.getRootElement();
root = root.element("session-factory");
List<Element> els = root.elements();
for(Element e : els){
if(e.getName().equals("property")){
String attval = e.attribute("name").getText();
if(attval.equals("hibernate.connection.url")){
//要修改的url的新值
e.setText("newUrl");
}else if(attval.equals("hibernate.connection.username")){
/ /要修改的username的新值
e.setText("newUsername");
}else if(attval.equals("hibernate.connection.password")){
//要修改的password的新值
e.setText("newPassword");
}
}
}
//重新写入到文件
XMLWriter output = new XMLWriter(new FileWriter(file));
output.write(doc);
output.close();
}
纯手打的,应该还有更简单的方法,但是没有工具忘记函数了,给你写了一个我记得住的方式,这个应该是可以的,用的是dom4j,如果你没有可能需要导入一个dom4j.jar的jar包
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public static void main(String[] args) throws Exception {
SAXReader sax = new SAXReader();
//假设你的xml是放在D盘下的叫做a.xml的文件
File file = new File("D:\\a.xml");
Document doc = sax.read(new FileInputStream(file));
Element root = doc.getRootElement();
root = root.element("session-factory");
List<Element> els = root.elements();
for(Element e : els){
if(e.getName().equals("property")){
String attval = e.attribute("name").getText();
if(attval.equals("hibernate.connection.url")){
//要修改的url的新值
e.setText("newUrl");
}else if(attval.equals("hibernate.connection.username")){
/ /要修改的username的新值
e.setText("newUsername");
}else if(attval.equals("hibernate.connection.password")){
//要修改的password的新值
e.setText("newPassword");
}
}
}
//重新写入到文件
XMLWriter output = new XMLWriter(new FileWriter(file));
output.write(doc);
output.close();
}
纯手打的,应该还有更简单的方法,但是没有工具忘记函数了,给你写了一个我记得住的方式,这个应该是可以的,用的是dom4j,如果你没有可能需要导入一个dom4j.jar的jar包
展开全部
可以直接在HibernateSessionFactory中设置
configuration.configure(configFile);
configuration.setProperty("hibernate.connection.url",“你的url”);
configuration.setProperty("hibernate.connection.username",“”);
configuration.setProperty("hibernate.connection.password",“”);
sessionFactory = configuration.buildSessionFactory();
configuration.configure(configFile);
configuration.setProperty("hibernate.connection.url",“你的url”);
configuration.setProperty("hibernate.connection.username",“”);
configuration.setProperty("hibernate.connection.password",“”);
sessionFactory = configuration.buildSessionFactory();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么不手动修改,必须要写程序吗?
更多追问追答
追问
上面要求jdbc:sqlserver://192.168.1.52:1433;databaseName=Management
parkdb
123456789
可以修改url的IP地址和数据库 ,username,password。我想了办法他们说不行让我用xml,而我不太懂xml所以只能求助了 如果你有好的介意还请指教
追答
我很奇怪,“他们说不行让我用xml”这就话是什么意思,既然数据库的URL可以修改了,为什么用户名和密码不能直接在XML修改,使用XML配置hibernate的数据源就是为了解决硬编码问题,XML既然在你手里,就可以有你来修改了,要用程序的话就使用DOM4j这个开源库了,他的API很简单的,我觉得这样是不是有点费力不讨好啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用dom4j或者是j4dom对血没了进行操作,具体可以看着两者的文档
追问
我对xml不熟 可以麻烦给代码 我现在急需 谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询