2016-08-23 4 views
0

Я написал код, который читает не-хостинг html-файлы. Эти файлы всегда находятся на жестком диске или локальном диске и не размещаются в веб-браузере.Получить локальный путь, когда он включает ../

Мне нужно найти файлы href, находящиеся внутри html-файла. Например, я мог бы получить 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 

предыдущий код обрабатывает внешние сетевые диски, но иногда URL-адрес сделки с локального диска, как это:

../../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 

Спасибо.

ответ

0

Используйте этот Html Agility Pack.

И вы можете использовать этот код, чтобы получить ссылку/FOLDERNAME:

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

    } 
+0

Привет. Я думаю, что может возникнуть недоразумение. Я не ищу код для поиска ссылок href. Я ищу код, который преобразует «../../greatsong.mp3» в «c: \ temp \ greatsong.mp3». – Bill

+0

О да, я вижу свою ошибку извините @Bill –

Смежные вопросы