我正在尝试使用c#
读取xml文件XmlDocument doc = new XmlDocument();
doc.Load(@"/Rules/AssessmentRule.xml");
XmlNode node = doc.SelectSingleNode("/RuleName");
string URI = node.InnerText;
return URI;
我在第2和第3行保留了断点。我在下面的行中得到错误
doc.Load(@"/Rules/AssessmentRule.xml");
它说
无法找到路径的一部分' C:\ Program 文件\规则\ AssessmentRule.xml'
我的项目的文件夹结构是, 它将Rules文件夹与我的类文件放在同一个地方
答案 0 :(得分:2)
在调试中运行时,路径基于Debug设置,默认为bin \ debug,除非您使用完整路径访问文件,它将相对于该文件夹(bin \ debug)。 [@miltonb提供]
以下是两种解决方案。
您可以将该文件添加到VS项目中。然后在VS中单击该文件转到属性集'复制到输出目录' - >总是复制。然后只需要提供文件名
或者你得到像这样的项目目录
string projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string xmlLocation = @"Rules/AssessmentRule.xml";
String fullPath = Path.Combine(projectPath,xmlLocation);
答案 1 :(得分:2)
如果项目文件夹中的文件尝试此路径
的代码string wanted_path = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()));
然后在该路径上找到该文件。
答案 2 :(得分:0)
在调试中运行时,路径基于'bin \ debug',除非您使用完整路径访问文件,它将相对于该文件夹。
答案 3 :(得分:0)
您需要获取项目目录,然后附加xml路径。
string projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string xmlLocation = @"Rules/AssessmentRule.xml";
String fullPath = Path.Combine(projectPath,xmlLocation);
答案 4 :(得分:0)
您应该使用OpenFileDialog
代替。它会让你的生活更轻松:
var openFile = new Microsoft.Win32.OpenFileDialog() {
CheckFileExists = true,
CheckPathExists = true,
Filter = "XML File|*.xml"
};
if (openFile.ShowDialog() ?? false)
{
XmlDocument doc = new XmlDocument();
doc.Load(openFile.FileName);
XmlNode node = doc.SelectSingleNode("/RuleName");
string URI = node.InnerText;
return URI;
}
else
{
// User clicked cancel
return String.Empty;
}