2016-08-23 83 views
0

時,獲取本地路徑我編寫了一些讀取非託管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 

上面的代碼處理外部網絡驅動器,但有時與一個本地驅動器的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 –