如何将WinForm中XML路径移至app.config并实现DataSet读写XML
解决方案:将DataSet写入XML的路径配置到app.config
完全可以实现!把硬编码路径移到app.config里不仅方便后续修改,还能避免每次改路径都要重新编译代码,下面是具体步骤:
1. 修改app.config添加路径配置
打开你的项目中的app.config文件,在<configuration>节点内添加<appSettings>配置段,把XML文件路径作为键值对存进去:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <!-- 支持绝对路径,也支持相对路径(相对程序运行的目录) --> <add key="XmlExportPath" value="E:\AppScienti\AppScienti-POSLite\POSLite-Dev\XML\POSLite.xml" /> </appSettings> <!-- 保留项目原有其他配置 --> </configuration>
2. 修改C#代码读取配置并写入XML
首先确保你的项目引用了System.Configuration程序集(右键项目→添加引用→找到System.Configuration勾选),然后修改原代码,把硬编码的路径替换成从配置读取的内容,还可以加个空值判断防止配置缺失:
// 从配置文件读取XML保存路径 string xmlFilePath = System.Configuration.ConfigurationManager.AppSettings["XmlExportPath"]; // 校验配置是否存在,避免空路径报错 if (string.IsNullOrEmpty(xmlFilePath)) { // 可以设置默认路径,或者弹出提示告知用户配置异常 xmlFilePath = @"默认存储路径\POSLite.xml"; MessageBox.Show("未配置XML导出路径,将使用默认路径存储"); } DataSet ds = CreateDynamicDataSet(); ds.WriteXml(xmlFilePath); private DataSet CreateDynamicDataSet() { DataSet ds = new DataSet("DS"); // 小建议:表名用"OutletMapping"这类有意义的名称会比"Tables[2]"更易维护,不过不影响现有功能 dtOutletMapping.TableName = "Tables[2]"; ds.Tables.Add(dtOutletMapping); dtxmlEmployee.TableName = "Tables[0]"; ds.Tables.Add(dtxmlEmployee); dtxmlOrg.TableName = "Tables[1]"; ds.Tables.Add(dtxmlOrg); return ds; }
这样以后要修改XML文件的保存路径,直接打开app.config修改value值就行,不用动代码重新编译啦~
内容的提问来源于stack exchange,提问作者user8751337
相关产品推荐
相关产品推荐

