Beispiel #1
0
 public Tag(Document doc, string name, string value)
 {
     this.ID = Count++;
     this.Name = name;
     this.Value = value;
     this.Document = doc;
 }
Beispiel #2
0
 /// <summary>
 /// Разбор тегов
 /// </summary>
 /// <param name="str">документ</param>
 /// <param name="doc">объектная модель докумнета</param>
 /// <param name="pattern">шаблон разбора</param>
 private static void ParseTagsWhitoutBody(string str, Document doc, string pattern)
 {
     var matches = Regex.Matches(str, String.Format("<(?<tag>{0})\\s*(?<attr>.*?)/>", pattern), RegexOptions.IgnoreCase);
     foreach (Match h in matches)
     {
         var tagS = h.Groups["tag"].Value;
         var tag = new Tag(doc, tagS, null);
         ParseAttributes(tag, h.Groups["attr"].Value);
         Model.Current.Tags.Add(tag);
     }
 }
Beispiel #3
0
 /// <summary>
 /// Разбор клучевых слов в документе
 /// </summary>
 /// <param name="str">документ</param>
 /// <param name="doc">объектная модель докумнета</param>
 private static void ParseKeywords(string str, Document doc)
 {
     var match = Regex.Match(str, "<meta name=\"keywords\" content=\"(?<content>.*?)\"\\s*?/>", RegexOptions.IgnoreCase);
     var keywords = match.Groups["content"].Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
     foreach (var keyword in keywords)
     {
         doc.Keywords.Add(keyword.Trim());
     }
 }
Beispiel #4
0
 /// <summary>
 /// Разбор тегов
 /// </summary>
 /// <param name="str">документ</param>
 /// <param name="doc">объектная модель докумнета</param>
 /// <param name="pattern">шаблон разбора</param>
 private static void ParseTags(string str, Document doc, string pattern)
 {
     var matches = Regex.Matches(str, String.Format("<{0}\\s*(?<attr>.*?)>(?<value>[\\d\\D]*?)</(?<tag>{0})>", pattern), RegexOptions.IgnoreCase);
     foreach (Match h in matches)
     {
         var tagS = h.Groups["tag"].Value;
         var value = h.Groups["value"].Value.Replace("\n", "").Replace("\r", "");
         var tag = new Tag(doc, tagS, value);
         ParseAttributes(tag, h.Groups["attr"].Value);
         Model.Current.Tags.Add(tag);
     }
 }
Beispiel #5
0
 /// <summary>
 /// Разбор документа
 /// </summary>
 /// <param name="arr">массив байт документа</param>
 /// <param name="url">url документа</param>
 private static void ParseDocument(byte[] arr, string url)
 {
     var ss = Encoding.Default.GetString(arr);
     var charset = Regex.Match(ss, @"charset=(?<charset>[\w-]*)", RegexOptions.IgnoreCase).Groups["charset"].Value;
     if (!String.IsNullOrEmpty(charset))
         ss = Encoding.GetEncoding(charset).GetString(arr);
     var title = Regex.Match(ss, @"<title>(?<title>[\d\D]*?)</title>", RegexOptions.IgnoreCase).Groups["title"].Value;
     title = title.Replace("\n", "").Replace("\r", "");
     var doc = new Document(title, url);
     ParseTags(ss, doc, "h\\d");
     ParseTags(ss, doc, "p");
     ParseKeywords(ss, doc);
     Model.Current.documents.Add(doc);
     Model.Current.Documents = null;
 }