C# 无法使用c读取xml文件#
我正在尝试使用c读取xml文件# 我把断点保留在第二行和第三行。我在下面的行中得到错误C# 无法使用c读取xml文件#,c#,xml,C#,Xml,我正在尝试使用c读取xml文件# 我把断点保留在第二行和第三行。我在下面的行中得到错误 doc.Load(@"/Rules/AssessmentRule.xml"); 上面说 找不到路径“C:\Program”的一部分 文件\Rules\AssessmentRule.xml' 我的项目的文件夹结构是, 在调试中运行时,规则文件夹与我的类文件位于同一位置。除非您使用完整路径访问文件,否则路径基于“bin\debug”,它将相对于该文件夹。在调试中运行时,路径基于“bin\debug”,除非您使用
doc.Load(@"/Rules/AssessmentRule.xml");
上面说
找不到路径“C:\Program”的一部分
文件\Rules\AssessmentRule.xml'
我的项目的文件夹结构是,
在调试中运行时,规则文件夹与我的类文件位于同一位置。除非您使用完整路径访问文件,否则路径基于“bin\debug”,它将相对于该文件夹。在调试中运行时,路径基于“bin\debug”,除非您使用完整路径访问文件,否则路径将相对于该文件夹文件夹。您需要获取项目目录,然后附加xml路径
string projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string xmlLocation = @"Rules/AssessmentRule.xml";
String fullPath = Path.Combine(projectPath,xmlLocation);
您需要获取项目目录,然后附加xml路径
string projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string xmlLocation = @"Rules/AssessmentRule.xml";
String fullPath = Path.Combine(projectPath,xmlLocation);
在调试中运行时,路径基于调试设置,默认为bin\debug,除非您使用完整路径访问文件,否则该文件将相对于该文件夹(bin\debug)。[由米尔顿提供] 下面是两个解决方案 您可以将该文件添加到VS项目中。然后在VS go to properties set‘复制到输出目录’->始终复制中单击该文件。然后只需要给出文件名 或者像这样获取项目目录
string projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string xmlLocation = @"Rules/AssessmentRule.xml";
String fullPath = Path.Combine(projectPath,xmlLocation);
在调试中运行时,路径基于调试设置,默认为bin\debug,除非您使用完整路径访问文件,否则该文件将相对于该文件夹(bin\debug)。[由米尔顿提供] 下面是两个解决方案 您可以将该文件添加到VS项目中。然后在VS go to properties set‘复制到输出目录’->始终复制中单击该文件。然后只需要给出文件名 或者像这样获取项目目录
string projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string xmlLocation = @"Rules/AssessmentRule.xml";
String fullPath = Path.Combine(projectPath,xmlLocation);
如果该文件位于项目文件夹中,请尝试使用以下代码获取路径
string wanted_path = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()));
然后找到该路径上的文件。如果该文件位于项目文件夹中,请尝试使用以下代码获取路径
string wanted_path = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()));
然后在该路径上查找文件。您可能应该使用
打开文件对话框。这会让你的生活更轻松:
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;
}
您可能应该使用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;
}
C:\Program Files\Rules\AssessmentRule.xml所以此路径中没有文件?您是否签入了资源管理器?没有xml文件在我的项目文件夹中,我不知道如何让它访问此项目文件夹路径鉴于其C:\Program Files\
您可能需要提升权限。类文件的路径是什么?最有可能是“我的可执行文件旁边的读取文件”的副本。。。从C:\Program Files\Rules\AssessmentRule.xml开始,因此此路径中没有文件?您是否签入了资源管理器?没有xml文件在我的项目文件夹中,我不知道如何让它访问此项目文件夹路径鉴于其C:\Program Files\
您可能需要提升权限。类文件的路径是什么?最有可能是“我的可执行文件旁边的读取文件”的副本。。。在删除前导正斜杠@“Rules/AssessmentRule.xml”之前,将不会组合“Start with Path”代码>奇怪的是,你的答案顶部的文本与我的答案相同,但你的时间戳在后面。当你否决一个非常详细的答案时,这似乎很奇怪:)我们是来帮助别人的。我不会投票否决你,因为你的答案没有错。我喜欢你的答案,如果你有礼貌地参考我的答案,我会投更高的票。那会很好。到目前为止,您的答案是最好的。路径本身并不是基于“bin\debug”,而是基于调试设置中的工作目录,默认为bin\debug(如果在调试模式下运行)。只有删除前导正斜杠@“Rules/AssessmentRule.xml”,才能组合路径代码>奇怪的是,你的答案顶部的文本与我的答案相同,但你的时间戳在后面。当你否决一个非常详细的答案时,这似乎很奇怪:)我们是来帮助别人的。我不会投票否决你,因为你的答案没有错。我喜欢你的答案,如果你有礼貌地参考我的答案,我会投更高的票。那会很好。到目前为止,您的答案是最好的。路径本身并不是基于“bin\debug”,而是基于调试设置中的工作目录,默认为bin\debug(如果在调试模式下运行)。只有删除前导正斜杠@“Rules/AssessmentRule.xml”,才能组合路径在删除前导正斜杠@“Rules/AssessmentRule.xml”之前,不会合并代码>路径代码>路径本身不是基于“bin\debug”,而是基于调试设置中的工作目录,默认为bin\debug。此外,我不确定这是如何回答OPs问题的。路径本身不是基于“bin\debug”,而是基于调试设置中的工作目录,默认为bin\debug。此外,我不确定这是如何回答OPs问题的。这是不正确的-程序应该能够在没有用户交互的情况下打开文件,我相信OP正在尝试这样做。这是不正确的-程序应该能够在没有用户交互的情况下打开文件,我相信OP正在尝试这样做。