该字符串未被识别为有效的uri

时间:2019-01-16 05:47:52

标签: c# xml wpf

运行方法时出现错误:

  

System.ArgmentException:该字符串未被识别为有效的uri

private void loadXMLBttn_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog selectConfigFile = new OpenFileDialog();
    selectConfigFile.Title = "Select an existing XML config file...";
    selectConfigFile.InitialDirectory = @"C:\";
    selectConfigFile.DefaultExt = ".xml";
    selectConfigFile.Filter = "xml files|.xml|All files (*.*)|*.*";
    var selectedFile = selectConfigFile.SafeFileName;
    selectConfigFile.ShowDialog();
    XDocument configFile = XDocument.Load(selectedFile);
}

2 个答案:

答案 0 :(得分:2)

您会收到此异常,因为您的selectedFile变量从未真正填充过。

您需要填充selectedFile变量之后,以显示对话框并允许用户选择XML文件:

selectConfigFile.ShowDialog();
var selectedFile = selectConfigFile.SafeFileName;
XDocument configFile = XDocument.Load(selectedFile);

答案 1 :(得分:1)

是的,问题在于您在显示对话框之前设置了selectedFile。如果您以这种方式重写代码,则可以100%解决该问题:

private void loadXMLBttn_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog selectConfigFile = new OpenFileDialog()
    {
        Title = "Select an existing XML config file...",
        InitialDirectory = @"C:\",
        DefaultExt = "*.xml",
        Filter = "XML files|*.xml|All files (*.*)|*.*"
    };
    if (selectConfigFile.ShowDialog() == true)
    {
        var selectedFile = selectConfigFile.FileName;
        XDocument configFile = XDocument.Load(selectedFile);
    }
}

这将修复一个过滤器,该过滤器在您的示例中不起作用,并使文件对话框选项初始化程序更加清晰。另外,如果用户不会选择任何文件-也不会尝试加载空字符串路径