Разбор данных / чисел из ячеек таблицы C # или VisualBasic - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть строка, которая содержит HTML-код с веб-страницы.В коде, который меня интересует, есть таблица. Я хочу разобрать числа, присутствующие в ячейках таблицы, и поместить их в текстовые поля, каждое из которых находится в своем собственном текстовом поле.Вот таблица:

<table class="tblSkills">
    <tr>
        <th class="th_first">Strength</th><td class="align_center">15</td>
        <th>Passing</th><td class="align_center">17</td>
    </tr>
    <tr>
        <th class="th_first">Stamina</th><td class="align_center">16</td>
        <th>Crossing</th><td class="align_center"><img src='/pics/star.png' alt='20' title='20' /></td>
    </tr>
    <tr>
        <th class="th_first">Pace</th><td class="align_center"><img src='/pics/star_silver.png' alt='19' title='19' /></td>
        <th>Technique</th><td class="align_center">16</td>
    </tr>
    <tr>
        <th class="th_first">Marking</th><td class="align_center">15</td>
        <th>Heading</th><td class="align_center">10</td>
    </tr>
    <tr>
        <th class="th_first">Tackling</th><td class="align_center"><span class='subtle'>5</span></td>
        <th>Finishing</th><td class="align_center">15</td>
    </tr>
    <tr>
        <th class="th_first">Workrate</th><td class="align_center">16</td>
        <th>Longshots</th><td class="align_center">8</td>
    </tr>
    <tr>
        <th class="th_first">Positioning</th><td class="align_center">18</td>
        <th>Set Pieces</th><td class="align_center"><span class='subtle'>2</span></td>
    </tr>
</table>

Как видите, здесь 14 чисел.Что еще хуже, числа типа 19 и 20 заменяются изображениями, а числа ниже 6 имеют класс span.Я знаю, что могу использовать пакет agility для HTML или что-то подобное, но я пока не очень разбираюсь, как это сделать сам, поэтому мне нужна ваша помощь.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2011

Использование LINQ to XML в C #:

var doc = XDocument.Parse(yourHtml);

var properties = new List<string>(
    from th in doc.Descendants("th")
    select th.Value);

var values = new List<int>(
    from td in doc.Descendants("td")
    let img = td.Element("img")
    let textValue = img == null ? td.Value : img.Attribute("alt").Value
    select int.Parse(textValue));

var dict = new Dictionary<string, int>();
for (var i = 0; i < properties.Count; i++)
{
    dict[properties[i]] = values[i];
}
0 голосов
/ 11 декабря 2011

Ваш пример HTML также является хорошим XML. Вы можете использовать любой из методов чтения / разбора XML .net.

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