Получить все, что находится между тегами
- C#

Узнай цену своей работы

Формулировка задачи:

Добрых времени суток. По адресу тык нужно вытянуть все что находится между тегом
Листинг программы
  1. <div id="content"> </div>
Делаю это так:
Листинг программы
  1. public void getLink(string html)
  2. {
  3. HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
  4. doc.LoadHtml(html);
  5. string lk = doc.DocumentNode.SelectSingleNode("//*[@id='content']").InnerText;
  6. richTextBox1.Text = lk;
  7. }
Строка имеет вид:
Листинг программы
  1. Имя
  2. Грейд
  3. Физ.атака
  4. Маг атака
  5. скорость
  6.  
  7. &nbsp;&nbsp;Меч новичка
  8. -
  9. 30
  10. 10
  11. 360
  12.  
  13. &nbsp;&nbsp;Короткий меч
  14. ВА
  15. 40
  16. 10
  17. 360
  18.  
  19. &nbsp;&nbsp;Длинный меч
  20. ВА
  21. 50
  22. 10
  23. 360
  24.  
  25. &nbsp;&nbsp;Добротный меч
  26. ВА
  27. 60
  28. 10
  29. 360
  30. ......
Теперь из этой строки нужно получить подстроки и занести их в массив. Подстроки должны иметь вид:
Листинг программы
  1. "Имя" "Физ.атака" или "Маг.атака"
Если физ. атака больше маг.атаки выводится физ.атака и наоборот. С регулярками не очень дружу, вытянуть что-то простенькое из строки могу, а как быть тут не знаю. P.S. А можно как то сразу с сайта спарсить необходимые мне подстроки не используя регулярки?

Решение задачи: «Получить все, что находится между тегами
»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication96
  7. {
  8.     class Weapon
  9.     {
  10.         public string Name { get; set; }
  11.         public string Grade { get; set; }
  12.         public int MAtk { get; set; }
  13.         public int PAtk { get; set; }
  14.         public int Speed { get; set; }
  15.     }
  16.     class Program
  17.     {
  18.         static void Main()
  19.         {
  20.             string text = File.ReadAllText("for.txt", Encoding.UTF8);
  21.             var parse = Parse(text);
  22.             foreach (Weapon weapon in parse)
  23.             {
  24.                 Console.WriteLine("{0} {1} {2}", weapon.Name, weapon.Grade, Math.Max(weapon.PAtk, weapon.MAtk));
  25.             }
  26.         }
  27.  
  28.         private static IEnumerable<Weapon> Parse(string text)
  29.         {
  30.             var lines = text.Split(new[] {'\r','\n','\t'}, StringSplitOptions.RemoveEmptyEntries);
  31.             for (int i = 0; i < lines.Length; )
  32.             {
  33.                 while (string.IsNullOrWhiteSpace(lines[i]))
  34.                 {
  35.                     i++;
  36.                     if (i == lines.Length)
  37.                         yield break;
  38.                 }
  39.                 if (lines[i].Contains("Имя"))
  40.                 {
  41.                     i += 5;
  42.                     continue;
  43.                 }
  44.                 var weapon = new Weapon();
  45.                 weapon.Name = lines[i++].Replace(" ", "").Trim();
  46.                 weapon.Grade = lines[i++];
  47.                 weapon.PAtk = int.Parse(lines[i++]);
  48.                 weapon.MAtk = int.Parse(lines[i++]);
  49.                 weapon.Speed = int.Parse(lines[i++]);
  50.                 yield return weapon;
  51.             }
  52.         }
  53.     }
  54. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы