html-agility-pack
2012-04-16 3 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 node ... который больше, чем я хочу.

Я хотел 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 ="), но это не нравится. –

+0

@AnnSanderson - атрибуты 'href' элемента' a' дают полное содержание этого. Вы можете использовать 'string.Split' для дальнейшего разделения этих значений. – Oded

+0

Хммм ... Я использовал ("// a"), а затем атрибут href и дал мне: 'javascript: parent.POPUP ({url: «Что я делаю неправильно? –

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