Html Agility Pack - Проблема с выбором подузла

Я хочу экспортировать свой план бега Asics в iCal, и, поскольку Asics не предлагает эту услугу, я решил создать небольшой скребок для личного пользования. Я хочу взять все запланированные запуски из моего плана и создать канал iCal на основе этого. Я использую C # и Html Agility Pack.

Я хочу перебирать все запланированные запуски (они являются узлами div). Затем я хочу выбрать несколько разных узлов с моими узлами запуска. Мой код выглядит так:

foreach (var run in doc.DocumentNode.SelectSingleNode("//div[@id='scheduleTable']").SelectNodes("//div[@class='pTdBox']"))
{
    number++;
    string date = run.SelectSingleNode("//div[@class='date']").InnerText;
    string type = run.SelectSingleNode("//span[@class='menu']").InnerHtml;
    string distance = run.SelectSingleNode("//span[@class='distance']").InnerHtml;
    string description = run.SelectSingleNode("//div[@class='description']").InnerHtml;
    ViewData["result"] += "Dato: " + date + "<br />";
    ViewData["result"] += "Tyep: " + type + "<br />";
    ViewData["result"] += "Distance: " + distance + "<br />";
    ViewData["result"] += "Description: " + description + "<br />";
    ViewData["result"] += run.InnerHtml.Replace("<", "&lt;").Replace(">", "&gt;") + "<br />" + "<br />" + "<br />";
}

Моя проблема в том, что (скрытый) не выбирает узел с заданным XPath в заданном узле выполнения. Он выбирает первый узел, который соответствует XPath во всем документе.

Как я могу выбрать единственный узел с данным XPath в текущем узле?

Спасибо.

Обновление

Я попытался обновить свой Строка XPath к этому:

string date = run.SelectSingleNode(".div[@class='date']").InnerText;

Это должно выбрать элемент

в текущем узле, верно? Я пробовал это, но получил такую ​​ошибку:

Выражение должно оцениваться как узел-набор. Описание: Необработанный исключение произошло во время выполнение текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации информация об ошибке и где оно возникло в коде.

Сведения об исключении: System.Xml.XPath.XPathException: Выражение должно оцениваться как node-set.

Есть предложения?

27
задан tereško 1 March 2013 в 00:14
поделиться