Использование LINQ to XML для просмотра таблицы HTML - PullRequest
1 голос
/ 13 сентября 2010

Итак, я могу легко использовать LINQ to XML для просмотра правильно настроенного XML-документа.Но у меня есть некоторые проблемы, выясняющие, как применить его к таблице HTML.Вот настройки:

<table class='inner'
       width='100%'>
    <tr>
        <th>Area</th>
        <th>Date</th>
        <th>ID</th>
        <th>Name</th>
        <th>Email</th>
        <th>Zip Code</th>
        <th>Type</th>
        <th>Amount</th>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
    </tr>
</table>

По сути, может быть бесконечное количество строк, я хочу иметь возможность идти строка за строкой, чтобы проверить данные соответственно.Может кто-то указать мне верное направление?Должен ли я использовать для этого другие инструменты, кроме LINQ?

EDIT : извините за путаницу, моя проблема в том, что страница, с которой я пытаюсь собрать данные, - это HTML, а не XML,Точное расширение - ".aspx.htm".Кажется, это не загружается должным образом, и даже если это произойдет, я не уверен, как пройти HTML-страницу, учитывая, что перед таблицей, из которой я пытаюсь получить данные, есть одна таблица.

Например, вот XPATH к таблице, из которой я пытаюсь получить информацию:

/html/body/form/div[3]/table/tbody/tr[5]/td/table

Ответы [ 3 ]

5 голосов
/ 13 сентября 2010
XElement myTable = xdoc.Descendants("table").FirstOrDefault(xelem => xelem.Attribute("class").Value == "inner");
IEnumerable<IEnumerable<XElement>> myRows = myTable.Elements().Select(xelem => xelem.Elements());

foreach(IEnumerable<XElement> tableRow in myRows)
{
    foreach(XElement rowCell in tableRow)
    {
        // tada..
    }
}
1 голос
/ 13 сентября 2010

Получив XElement с <table>, вы можете перебрать его дочерний элемент Elements().

0 голосов
/ 13 сентября 2010

linq похож на sql, он выполняет операции на основе множества.

Вы хотите сосредоточиться на использовании цикла foreach для перебора выбранного набора элементов -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...