Итерируйте каждую таблицу и получите информацию - PullRequest
0 голосов
/ 27 февраля 2012

Мне нужно получить информацию из двух таблиц:

http://pastebin.com/BzbKPH2i

Я повторяю каждую таблицу, и из каждой таблицы я получаю информацию от td

Но я получаю информацию два раза, и orderingText заполняется x2, поэтому, чтобы предотвратить вторую итерацию, я ставлю break , чтобы остановить ее, но я думаю, что это не то, как работает HtmlAgilityPack или я делаю что-то не так

// Get the node from the div
//
HtmlNode orderingProcNode = docProcSpecs.DocumentNode.SelectSingleNode("//div[@id='orderingordering']");

string[] orderingText = new string[1024];
int t = 0;

// Iterate each table
foreach (HtmlNode orderingProcessor in orderingProcNode.SelectNodes("//table[@class='noSort infoTable']"))
{

    foreach (HtmlNode ordProcessor in orderingProcessor.SelectNodes("//tbody//tr//td"))
    {
        // Here I get all the info from the two tables instead of one table
        //
        orderingText[t++] = ordProcessor.InnerText.Trim();
    }

    break; // this is the solution
}

1 Ответ

0 голосов
/ 27 февраля 2012

Проблема заключается во внутреннем цикле foreach - вы выбираете все tbody узлы в документе, где вам действительно нужны все дочерние узлы текущего узла - простоснять косую черту:

foreach (HtmlNode ordProcessor in orderingProcessor.SelectNodes("tbody/tr/td"))
...