【问题标题】:Producing a Windows Path from an XML URI从 XML URI 生成 Windows 路径
【发布时间】:2009-04-17 00:36:31
【问题描述】:

将 XML URI 转换为 Windows 文件路径的正确方法是什么?

作为起点,可以转:

file:///C:/DirA/DirB/File.txt

进入:

C:\DirA\DirB\File.txt

...首先删除file:/// 子字符串(使用它来确定我们正在处理本地文件),然后在原始字符串中出现斜杠的任何位置放置一个反斜杠。这似乎是一个好的开始,但这还不够。例如,URI 可能如下所示:

file:///C:/DirA/DirB/With%20Spaces.txt

...变成:

C:\DirA\DirB\With Spaces.txt

... 用空格替换 %20s 后。然而,即使这样也不够,因为可能同样需要处理其他类似的encodings。此外,其中一些字符不是合法的 Windows 文件名字符,因此有必要确定哪些编码在 Windows 文件名中有效,并在遇到其他情况时标记错误。

还有什么我忘记的吗?有人愿意扩展上述内容吗?

【问题讨论】:

    标签: html windows xml url string


    【解决方案1】:

    使用Uri.LocalPath 属性。

    string path = new Uri("file:///C:/folder/file.txt").LocalPath;
    

    这是平台敏感的,所以 path 在我的 Windows 机器上是 "C:\folder\file.txt"

    请注意,您也可以使用构造函数进行其他方式(从本地文件系统路径到 file URI):

    var uri = new Uri(@"C:\folder\file.txt");
    

    【讨论】:

      【解决方案2】:

      您应该在 Windows 上使用 PathCreateFromUrl()

      另见The Bizarre and Unhappy Story of File: URLs

      【讨论】:

      • 我希望有人详细说明将 URI 转换为 Windows 路径的实际过程,但在这种情况下,我将您的答案标记为已接受。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 2019-08-11
      • 1970-01-01
      • 2011-12-31
      • 2018-12-18
      • 1970-01-01
      相关资源
      最近更新 更多