c#中Xml路径出现问题

OpenFileDialogofd=newOpenFileDialog();ofd.Filter="exe文件|*.exe|所有文件|*.*";//文件过滤1.Dialo... OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "exe文件|*.exe|所有文件|*.*";//文件过滤
1. DialogResult dr = ofd.ShowDialog();
if (dr == DialogResult.OK)
{
//这里做其它操作
}
else
{
return;
}

XmlDocument xd = new XmlDocument();
try
{
2. xd.Load("soso.xml");//xml文件名
}
catch (Exception ex)
{
return;
}

注:这里的文件打开对话框的作用不是用来打开xml文件的,而是用来打开其它文件,
出现的问题:如果不打开"文件对话框",xd.Load("相对路径")能正常使用,如果需要用到"文件打开对话框"做其它操作的

话,xd.Load("相对路径")这里就报错,原因是因为:此时的xd.Load()的路径就变成了"文件打开对话框"的路径加原相对路径

,这样肯定会报错,唯一解决办法:xd.Load("使用绝对路径");但这种实际程序是不允许这样做的,请问有什么办法解决?
展开
 我来答
妖好你041af
推荐于2016-02-14 · TA获得超过499个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:0
展开全部
方法有二:
1.使用Application.StartupPath来将相对路径转换成绝对路径
代码:xd.Load(Path.Combine(Application.StartupPath, "soso.xml"));
2.使用RestoreDirectory属性要求OpenFileDialog不要更改初始路径
代码:
ofd.RestoreDirectory=true;//这一句,RestoreDirectory属性的默认值为false 所以你选择后当前目录会发生变化
司琅0Iid5b
2010-09-17 · TA获得超过802个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:619万
展开全部
.net下的“相对路径”,其实是等价于:Path.Combine(Environment.CurrentDirectory,"相对路径");
而我们知道Environment.CurrentDirectory会变化,根据用户的操作。

解决方法是:

xd.Load("soso.xml");
修改为
string path = Path.Combine(Application.StartupPath, "soso.xml");
xd.Load(path);
Application.StartupPath 是应用程序启动的路径。
或者使用
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path);
功能类似。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yiwei124
2010-09-17 · TA获得超过1197个赞
知道小有建树答主
回答量:1187
采纳率:0%
帮助的人:356万
展开全部
xd.Load(Server.MapPath("..\xml.config"));
Server.MapPath这个方法会把虚拟路径变成绝对路径
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式