怎样读取XML配置文件?

CGYNWHY 2010-01-04 10:36:20
我自定义了一个XML文件,里面是我要连接的数据源!按照以前写法是:
strcon="={IBM INFORMIX ODBC DRIVER};Host=192.168.0.3;Server=life;Service=1527;Protocol=olsoctcp;Database=lifearchive;UID=informix;PWD=dztech;";
odbcconnection odbccon=new (strcon);
odbcdataadpater odbcda=new odbcdataadpater("select * from table",odbccon)
......

但是这个数据源有可能会变,所以把它写成一个XML文件,只需要更改这个XML配置文件就可以了,不需要更改后台代码!XML文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<Config>
<DATASOURCE>Driver={IBM INFORMIX ODBC DRIVER};Host=192.168.0.3;Server=life;Service=1527;Protocol=olsoctcp;Database=lifearchive;UID=informix;PWD=dztech;</DATASOURCE>
</Config>

但是我的后台代码该怎样引用呢??我的的是VS2005(Winform)!请哪位高手给予指点!尽可能详细一点......
...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
steel1985 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yangglemu 的回复:]
XML文件如下:
XML code<?xml version="1.0" encoding="utf-8"?><JiuJiu.DbAccess><DbType>Access</DbType><DbConnections><DbConnection><Name>Access</Name><ProviderName>System.Data.OleDb</ProviderName><ConnectionString>provider=Microsoft.jet.oledb.4.0;data source=e:\data.mdb</ConnectionString></DbConnection><DbConnection><Name>SqlServer</Name><ProviderName>System.Data.SqlClient</ProviderName><ConnectionString>Server=Tcp:(local);uid=sa;pwd=sa;database=jiujiu</ConnectionString></DbConnection></DbConnections></JiuJiu.DbAccess>

读取代码如下:
C# codeprivate DbHelper()
{
XmlDocument doc=new XmlDocument();
doc.Load("JiuJiu.DbAccess.xml");
XmlElement root= doc.DocumentElement;
XmlNode node= root.SelectSingleNode("/JiuJiu.DbAccess/DbType");string dataType= node.InnerText;
node= root.SelectSingleNode("/JiuJiu.DbAccess/DbConnections/DbConnection[Name='"+ dataType+"']");string providerName= node["ProviderName"].InnerText;string connectionString= node["ConnectionString"].InnerText;
DbProviderFactory factory= DbProviderFactories.GetFactory(providerName);
connection= factory.CreateConnection();
connection.ConnectionString= connectionString;
command= factory.CreateCommand();
command.Connection= connection;
adapter= factory.CreateDataAdapter();
}
[/Quote]

正解
daichenghua 2010-01-05
  • 打赏
  • 举报
回复
2、3楼都是可以的
walkghost 2010-01-05
  • 打赏
  • 举报
回复
为毛不用app.config或者web.config?
不老神仙 2010-01-05
  • 打赏
  • 举报
回复
2楼正解
如果想学习读取XML节点 看看XMLp路径解析
yeyanhui0331 2010-01-05
  • 打赏
  • 举报
回复
2楼正解
Fibona 2010-01-05
  • 打赏
  • 举报
回复
最简单的就是放到App.config中ConnectionStrings节点,用
string connstring =ConfigurationManager.ConnectionStrings["配置节点名称"].ConnectionString;


或者如果放在AppSetting节点用
string connstring =System.Configuration.ConfigurationManager.AppSettings["配置节点名称"]
来读取

如果放到其它Xml文档中,


XmlDocument doc = new XmlDocument();
doc.Load(configfileName);
XmlNode node = doc.SelectSingleNode(@"configuration/DATASOURCE");
if (node != null)
{
string connstring=node.innerText;
}
  • 打赏
  • 举报
回复
XML文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<JiuJiu.DbAccess>
<DbType>Access</DbType>
<DbConnections>
<DbConnection>
<Name>Access</Name>
<ProviderName>System.Data.OleDb</ProviderName>
<ConnectionString>provider=Microsoft.jet.oledb.4.0;data source=e:\data.mdb</ConnectionString>
</DbConnection>
<DbConnection>
<Name>SqlServer</Name>
<ProviderName>System.Data.SqlClient</ProviderName>
<ConnectionString>Server=Tcp:(local);uid=sa;pwd=sa;database=jiujiu</ConnectionString>
</DbConnection>
</DbConnections>
</JiuJiu.DbAccess>


读取代码如下:

private DbHelper()
{
XmlDocument doc = new XmlDocument();
doc.Load("JiuJiu.DbAccess.xml");
XmlElement root = doc.DocumentElement;
XmlNode node = root.SelectSingleNode("/JiuJiu.DbAccess/DbType");
string dataType = node.InnerText;
node = root.SelectSingleNode("/JiuJiu.DbAccess/DbConnections/DbConnection[Name='" + dataType+"']");
string providerName = node["ProviderName"].InnerText;
string connectionString = node["ConnectionString"].InnerText;
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
command = factory.CreateCommand();
command.Connection = connection;
adapter = factory.CreateDataAdapter();
}
asdf_ndsc 2010-01-05
  • 打赏
  • 举报
回复
你怎么 这么笨呢.
找本入门书学一下. 看来你还没入门.
没入门做个开发哪里都是问题.
aimeast 2010-01-04
  • 打赏
  • 举报
回复
【广告位招租】

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧