2013-06-17 2 views
1

Я новичок в StackOverflow, и я надеюсь, что мой вопрос не будет четным ..Как загрузить содержимое элемента по его иерархии

Я хочу просто скачать текст внутри svalue из sindex элемента, а также содержание другой <p> бирка. Это его иерархия:

/html/body/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[3]/td/table/tbody/tr/td/table/tbody/tr/td/table[4]/tbody/tr[2]/td[2]/table/tbody/tr/td/div/span/span/p/span/sindex 

Можно ли загрузить контент по его иерархии? например, с HtmlAgilityPack или по-другому?

Благодаря


WebClient client = new WebClient(); 
    string url = "http://www.google.com"; 
    var content = client.DownloadString(url); 

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
    doc.LoadHtml(content); 
    // ? 

Update после @MSI ответа, я использую это:

var value = doc.DocumentNode 
     .SelectSingleNode("//html/body/div/div/a/div"); 

Но возвращаемое значение всегда равно нулю. mayber Я неправильно понимаю иерархию. Я использую firebug и смотрю на вкладку html для своей иерархии, не так ли?

+0

Что говорят документы/примеры? –

+0

Я не видел никакой документации и всего лишь одного примера для ловкости .. но в любом случае, если есть другой способ, я ценю это. – user2490629

+0

Пожалуйста, напишите свой html на pastebin – a1204773

ответ

0

Разве вы не можете использовать что-то вдоль линии,

* Учитывая SValue быть атрибутом:

doc.DocumentNode 
    .SelectSingleNode("//html/element1/element2") 
    .Attributes["svalue"].Value; 

или для элемента,

doc.DocumentNode 
    .SelectSingleNode("//html/element1/element2/svalue").InnerText; 

EDIT:

Re. SelectSingleNode возвращает null для моих предыдущих примеров с помощью google.com.au в качестве исходного источника HTML используйте следующий метод для et желаемого результата.

doc.DocumentNode 
    .SelectSingleNode(".//element1/element2/svalue").InnerText; 

DocumentNode должен ссылаться на корневой узел html-документа и .// относительно этого.

+0

Привет, Всякий раз, когда я использую SelectSingleNode, возвращаемое значение равно null. Я загружаю и загружаю страницу таким образом, может быть, это неправильно? 'webClient.DownloadFile (url," download.htm ");' и 'doc.LoadHtml (" download.htm ");' – user2490629

+0

Проверьте мое редактирование для лучшего примера – MSI

+0

Вы также можете использовать WebClient.DownloadString() и string непосредственно в LoadHtml от AgilityPack. – MSI

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