コード例 #1
0
        public static bool IsEmptyElement(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (name.Length == 0)
            {
                return(true);
            }
            if ('!' == name[0])
            {
                return(true);
            }
            if ('?' == name[0])
            {
                return(true);
            }
            if (!ElementsFlags.ContainsKey(name.ToLower()))
            {
                return(false);
            }
            HtmlElementFlag flag = ElementsFlags[name.ToLower()];

            return((flag & HtmlElementFlag.Empty) != 0);
        }
コード例 #2
0
 private static void RemoveSetting(string tag, HtmlElementFlag flag)
 {
     if (HtmlNode.ElementsFlags.ContainsKey(tag))
     {
         HtmlNode.ElementsFlags[tag] = HtmlNode.ElementsFlags[tag] & ~flag;
     }
 }
コード例 #3
0
ファイル: HtmlNode.cs プロジェクト: shekky/Shaman.Dom
        public static bool IsClosedElement(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            HtmlElementFlag htmlElementFlag = HtmlNode.ElementsFlags.TryGetValue(name.ToLowerFast());

            return((htmlElementFlag & HtmlElementFlag.Closed) != (HtmlElementFlag)0);
        }
コード例 #4
0
        public static bool IsClosedElement(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (!ElementsFlags.ContainsKey(name.ToLower()))
            {
                return(false);
            }
            HtmlElementFlag flag = ElementsFlags[name.ToLower()];

            return((flag & HtmlElementFlag.Closed) != 0);
        }
コード例 #5
0
		/// <summary>
		/// Determines if an element node can be kept overlapped.
		/// </summary>
		/// <param name="name">The name of the element node to check. May not be <c>null</c>.</param>
		/// <returns>true if the name is the name of an element node that can be kept overlapped, <c>false</c> otherwise.</returns>
		public static bool CanOverlapElement(string name)
		{
			if (name == null)
			{
				throw new ArgumentNullException("name");
			}

			if (!ElementsFlags.ContainsKey(name.ToLower()))
			{
				return false;
			}

			HtmlElementFlag flag = ElementsFlags[name.ToLower()];
			return (flag & HtmlElementFlag.CanOverlap) != 0;
		}
コード例 #6
0
ファイル: HtmlNode.cs プロジェクト: shekky/Shaman.Dom
        public static bool IsEmptyElement(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (name.Length == 0)
            {
                return(true);
            }
            if ('!' == name[0])
            {
                return(true);
            }
            if ('?' == name[0])
            {
                return(true);
            }
            HtmlElementFlag htmlElementFlag = HtmlNode.ElementsFlags.TryGetValue(name.ToLowerFast());

            return((htmlElementFlag & HtmlElementFlag.Empty) != (HtmlElementFlag)0);
        }
コード例 #7
0
        public bool IsWebContentChanged(string url, string ID, string @class, string lastContent, out string changedContent)
        {
            try
            {
                using (WebClient wc = new WebClient())
                {
                    //string stringThatKeepsYourHtml = "<div id=....";
                    HtmlDocument    doc = new HtmlDocument();
                    HtmlElementFlag hl  = new HtmlElementFlag();

                    doc.LoadHtml(wc.DownloadString(url));

                    //doc.LoadHtml(stringThatKeepsYourHtml);
                    string content = doc.Text;

                    //content = content.Replace("</div>", "");
                    if (ID.Length > 0)
                    {
                        content = doc.GetElementbyId(ID).InnerHtml;
                    }
                    else
                    {
                        content = doc.DocumentNode.SelectSingleNode("//div[@class='" + @class + "']").OuterHtml;
                        Debug.WriteLine("Checking content " + url);
                        Debug.WriteLine("Content first = " + content);

                        Debug.WriteLine(content);
                    }
                    List <string> removers = new List <string>();
                    try
                    {
                        removers.AddRange(doc.DocumentNode.SelectNodes("//img[@class='wp-post-image']").Select(x => x.OuterHtml).ToList());
                    }
                    catch
                    {
                    }
                    try
                    {
                        removers.AddRange(doc.DocumentNode.SelectNodes("//a[@class='__cf_email__']").Select(x => x.OuterHtml).ToList());
                    }
                    catch
                    {
                    }

                    try
                    {
                        removers.AddRange(doc.DocumentNode.SelectNodes("//div[@class='grid-container grid-container__classic tc-grid-shadow tc-grid-border tc-grid-hover-move']").Select(x => x.OuterHtml).ToList());
                    }
                    catch
                    {
                    }
                    foreach (string remover in removers)
                    {
                        Debug.WriteLine("remover = " + remover);
                        content = content.Replace(remover, "");
                    }

                    content = content.Replace(" ", "");
                    content = content.Replace(System.Environment.NewLine, "");
                    content = Regex.Replace(content, @"\t|\n|\r", "");
                    if (lastContent != content)
                    {
                        changedContent = content;
                        return(true);
                    }

                    wc.Dispose();
                }
            }
            catch
            {
            }
            changedContent = string.Empty;
            return(false);
        }