html-agility-pack
2012-04-16 32 views 1 likes 
1

我使用HtmlAgilityPack並試圖從html中提取圖像名稱。這裏的HTML字符串我有:通過HtmlAgilityPack提取

sHtml = "<HTML><HEAD></HEAD><BODY>Here are some images.</br>1) < IMG style='MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20px' align=right src='images/sample001.jpg'>2) < IMG style='MARGIN-BOTTOM: 25px; MARGIN-LEFT: 25px' align=right src='images/sample002.png'></br> And some docs as well.</br>1) href='javascript:parent.POPUP({url:'testDoc001.htm',type:'shared',width:600,height:645})'></br>2) href='javascript:parent.POPUP({url:'testDoc002.html',type:'shared',width:700,height:712})'></br></BODY></HTML>" 

在WPF C#我通過這個字符串爲以下程序:


private static List<string> ExtractHtmlInfo(string sHtml) 
{ 
    HtmlDocument doc = new HtmlDocument(); 
    doc.Load(new StringReader(sHtml)); 
    HtmlNode root = doc.DocumentNode; 

    List<string> anchorTags = new List<string>(); 

    //foreach (HtmlNode link in root.SelectNodes("//a")) 
    foreach (HtmlNode link in root.SelectNodes("//img")) 
     { 
     string att = link.OuterHtml; 
     anchorTags.Add(att); 
    } 

    return anchorTags; 
} 

當我通過代碼我看行:

string att = link.OuterHtml; 

規定了整個< img節點...這比我想要的要多。

我想anchorTags有文件只是文件夾名稱,如:

[0] = images/sample001.jpg 
[1] = images/sample002.png 

所以,我需要比.OuterHtml以外的東西,但無法找到它。

任何人都可以幫忙嗎?

回答

1

您正在尋找的圖像元素的src屬性的值:

foreach (HtmlNode img in root.SelectNodes("//img")) 
{ 
    string att = img.Attributes["src"].Value; 
    anchorTags.Add(att); 
} 
+0

這是偉大的俄德......正是我一直在尋找。另一個問題,我將如何從這個相同的例子中提取字符串'testDoc001.htm'?我試圖使用root.SelectNode(「// html =」),但它不喜歡那樣。 – 2012-04-16 18:59:05

+0

@AnnSanderson - 「a」元素的'href'屬性將給出完整的內容。你可以使用'string.Split'來進一步分割這些值。 – Oded 2012-04-16 19:03:00

+0

嗯......我用過(「// a」),然後是href屬性,它給了我:'javascript:parent.POPUP({url:'我做錯了什麼? – 2012-04-16 19:10:57

相關問題