日期:2014-05-18  浏览次数:20833 次

跪求如何动态修改hibernate.cfg.xml的文件
最近开始尝试使用NHibernate,需要动态修改hibernate.cfg.xml文件中的Data Source属性
hibernate.cfg.xml文件如下
XML code

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="NHibernate.Test">
    <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver, NHibernate</property>
    <property name="connection.connection_string">
      Data Source=D:\Subject.db3;Version=3
    </property>
    <property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
    <property name="query.substitutions">true=1;false=0</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
  </session-factory>
</hibernate-configuration>


我想把其中的Data Source=D:\Subject.db3修改为如Data Source=C:\Other.db3,请问如何写代码?
本人平时基本不用XML文件,所以,
C# code

string FileName = "hibernate.cfg.xml";
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(FileName);

            XmlNodeList nodeList = xmldoc.SelectSingleNode("hibernate-configuration").ChildNodes;


后就不知道该怎么办了,急啊~~~请高手不吝赐教!!!

------解决方案--------------------
XmlNodeList nl = nodeList.ChildNodes;
if(nl.nodename=="session-factory") //测试节点名字,具体的属性或方法忘了
{
XmlNodeList cnl=nl.ChildNodes;
foreach(XmlNode xn in cnl)
{
if(xn.nodename="property" && xn.GetAttribute("name")=="connection.connection_string") //这个是测试节点名字和节点的属性,具体的属性或方法忘了
{
xn.SetAttribute("name","nameValue");//设置节点属性值,具体的属性或方法忘了
}
…………
}

}


仅供参考