.NET 4.x HtmlAgilityPack - получение текста внутри тега - C#

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

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

Доброго времени суток. При разборе html - страницы возникла необходимость получать для каждого тега его внутренний текст БЕЗ текста потомков! Метод
Листинг программы
  1. node.InnerText
- возвращает свой текст+ текст всех потомков, поэтому приходится делать вот так:
Листинг программы
  1. string bigInnerText = node.InnerText;
  2. foreach (var child in childNodeCollection) // для каждого потомка
  3. {
  4. var text = child.InnerText;
  5. if ((text.Length > 10) && (dateExist(text)))
  6. {
  7. bigInnerText = bigInnerText.Replace(text, ""); // выкусываем из текста родителя текст потомка
  8. }
  9. }
То есть вырезать из текста родителя содержимое потомков. Все работает, НО катастрофически медленно из за перебора всех потомков. Данная функция вызывается очень много раз, поэтому необходимо ее сделать БЫСТРОЙ. Буду рад предложениям по оптимизации. Заранее спасибо.

Решение задачи: «.NET 4.x HtmlAgilityPack - получение текста внутри тега»

textual
Листинг программы
  1.      public virtual string InnerTextNoRekurs
  2.         {
  3.             get
  4.             {
  5.                 if (this.Name == "#text")
  6.                     return ((HtmlTextNode)this).Text;
  7.                 foreach (HtmlNode node in ChildNodes)
  8.                 {
  9.                     if(node.Name == "#text")
  10.                         return ((HtmlTextNode)node).Text;
  11.                 }
  12.                 return "";
  13.             }
  14.         }

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


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

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

8   голосов , оценка 3.875 из 5

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

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

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