Разбор большой строки (HTML code) - PullRequest
0 голосов
/ 23 октября 2010

Я хочу разобрать некоторую информацию о моем заявлении. Допустим, у нас есть где-то в этой строке:

<tr class="tablelist_bg1">

<td>Beja</td>

<td class="text_center">---</td>

<td class="text_center">19.1</td>

<td class="text_center">10.8</td>

<td class="text_center">NW</td>

<td class="text_center">50.9</td>

<td class="text_center">0</td>

<td class="text_center">1016.6</td>

<td class="text_center">---</td>

<td class="text_center">---</td>

</tr>

Все остальное, что выше или ниже, не имеет значения. Помните, что это все внутри строки. Я хочу получить значения внутри тегов td: ---, 19.1, 10.8 и т. Д. Стоит знать, что на странице много таких записей. Вероятно, также хорошая идея связать страницу здесь .

Как вы, наверное, догадались, я понятия не имею, как это сделать ... ни одна из функций, которые я знаю, я не могу выполнить с помощью строки (разбиение и т. Д.).

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 23 октября 2010

Просто используйте String.IndexOf (string, int), чтобы найти «

» и снова для поиска «». Затем используйте String.Substring, чтобы извлечь значение. Поместите это в петлю.
    public static List<string> ParseTds(string input)
    {
        List<string> results = new List<string>();

        int index = 0;

        while (true)
        {
            string next = ParseTd(input, ref index);

            if (next == null)
                return results;

            results.Add(next);
        }
    }

    private static string ParseTd(string input, ref int index)
    {
        int tdIndex = input.IndexOf("<td", index);
        if (tdIndex == -1)
            return null;
        int gtIndex = input.IndexOf(">", tdIndex);
        if (gtIndex == -1)
            return null;
        int endIndex = input.IndexOf("</td>", gtIndex);
        if (endIndex == -1)
            return null;

        index = endIndex;

        return input.Substring(gtIndex + 1, endIndex - gtIndex - 1);
    }
0 голосов
/ 23 октября 2010
  • Использование цикла для загрузки каждой непустой строки из файла в строку
  • Обработка строки символ за символом
    • Проверка на наличие символов, обозначающих начало тега td
    • используйте функцию подстроки или просто создайте новую символьную строку, чтобы получить весь контент, пока не начнется тег </td>.
0 голосов
/ 23 октября 2010

Предполагая, что ваша строка является допустимым XHTML, вы можете использовать синтаксический анализатор XML для получения необходимого контента. Здесь есть простой пример , который показывает, как использовать XmlTextReader для анализа содержимого XML. Пример читает из файла, но вы можете изменить его на чтение из строки:

new XmlTextReader(new StringReader(someString));

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

...