示例#1
0
 public void HighlightStaticsticIncrease(StatisticsDataSet.HighlightStatisticsRow runStatistics, HighlightWord word)
 {
     StatisticsDataSet.WordStatisticsRow wordRow = statisticsDataSet.WordStatistics.FirstOrDefault(row =>
         row.Word == word.Content && row.RunId == runStatistics.RunId);
     if (wordRow == null)
     {
         wordRow = statisticsDataSet.WordStatistics.AddWordStatisticsRow
             (word.Content
             , word.BackgroundColor.ToArgb()
             , runStatistics
             , 0);
     }
     runStatistics.TotalMatchedCount++;
     wordRow.MatchedCount++;
 }
示例#2
0
        private string ProcessingWords(string textContent, WordMatcher matcher, StatisticsDataSet.HighlightStatisticsRow statisticsRow = null)
        {
            StringBuilder word = new StringBuilder();

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(textContent);

            HtmlAgilityPack.HtmlDocument newDoc = new HtmlAgilityPack.HtmlDocument();

            foreach (HtmlNode htmlNode in doc.DocumentNode.ChildNodes)
            {
                if (htmlNode.Name.Equals("#text", StringComparison.OrdinalIgnoreCase))
                {
                    foreach (char c in htmlNode.InnerText)
                    {
                        if (char.IsLetterOrDigit(c))
                        {
                            word.Append(c);
                        }
                        else
                        {
                            if (word.Length > 0)
                            {
                                AppendNewWord(ref newDoc, word.ToString(), matcher, statisticsRow);
                                word.Clear();
                            }

                            AppendSimpleWord(ref newDoc, c.ToString());
                        }
                    }
                }
                else
                {
                    if (word.Length > 0)
                    {
                        AppendNewWord(ref newDoc, word.ToString(), matcher, statisticsRow);
                        word.Clear();
                    }

                    HtmlNode otherNode = htmlNode.CloneNode(true);
                    newDoc.DocumentNode.ChildNodes.Add(otherNode);
                }
            }

            if (word.Length > 0)
            {
                AppendNewWord(ref newDoc, word.ToString(), matcher);
            }

            return GetDocContent(newDoc);
        }
示例#3
0
        private void AppendNewWord(ref HtmlAgilityPack.HtmlDocument newDoc, string word, WordMatcher matcher, StatisticsDataSet.HighlightStatisticsRow statisticsRow = null)
        {
            HighlightWord matchedWord = null;
            if (matcher.Match(word, out matchedWord))
            {
                HtmlNode span = newDoc.CreateElement("span");
                span.SetAttributeValue("style", matchedWord.Style);
                span.InnerHtml = word;
                newDoc.DocumentNode.ChildNodes.Append(span);

                //if (statisticsRow != null)
                //{
                //    frmStatistics.HighlightStaticsticIncrease(statisticsRow, matchedWord);
                //}
            }
            else
            {
                AppendSimpleWord(ref newDoc, word);
            }
        }