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

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

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

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

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

textual
Листинг программы
     public virtual string InnerTextNoRekurs
        {
            get
            {
                if (this.Name == "#text")
                    return ((HtmlTextNode)this).Text;
                foreach (HtmlNode node in ChildNodes)
                {
                    if(node.Name == "#text")
                        return ((HtmlTextNode)node).Text;
                }
                return "";
            }
        }

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


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

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

8   голосов , оценка 3.875 из 5
Похожие ответы