当它包括../

时间:2016-08-23 02:14:43

标签: c# html

我写了一些代码来读取非托管的html文件。这些文件始终位于硬盘驱动器或本地驱动器上,不在Web浏览器中托管。

我需要找到html文件中的href文件。例如,我可能会得到一个如下所示的href:

file://myserver/mp3s/greatsong.mp3

由于我需要使用c#代码来获取文件,因此我使用LocalPath属性:

var path = new Uri("file://myserver/mp3s/greatsong.mp3").LocalPath;
Console.WriteLine(path);

输出正是我想要的,这就是:

\\myserver\mp3s\greatsong.mp3

以前的代码处理外部网络驱动器,但有时网址会处理本地驱动器,如下所示:

../../greatsong.mp3

如何获取此mp3文件所在的文件夹名称?我可以假设该文件位于html文件的同一驱动器位置,这意味着如果html文件位于c:\temp\files\myhtml\myfile.htm中,则greatsong.mp3文件位于c:\驱动器中。

我能想到获得文件夹名称的最好方法是读取../的每个实例来遍历目录结构,但这看起来很笨拙。

我可以使用哪种方法看起来像这样吗?

var whatIWant = new Uri("../../greatsong.mp3", "C:\").LocalPath;

whatIWant的输出:

C:\temp\greatsong.mp3

感谢。

1 个答案:

答案 0 :(得分:0)

使用此Html Agility Pack.

您可以使用此代码获取链接/ foldername:

  HtmlWeb hw = new HtmlWeb();
  HtmlDocument doc = hw.Load(/* url */);
  foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
  {

  }