Beispiel #1
0
        public List<string> GetUsersFromTb(Winista.Text.HtmlParser.Util.NodeList nlist)
        {
            List<string> us = new List<string>();
            if (nlist == null || nlist.Count == 0)
                return us;
            Winista.Text.HtmlParser.INode tablenode = null;
            for (int i = 0; i < nlist[0].Children.Count; i++)
            {
                var tg = nlist[0].Children[i] as Winista.Text.HtmlParser.ITag;
                if (tg == null || tg.TagName != "TABLE")
                    continue;
                tablenode = nlist[0].Children[i];
                break;
            }
            if (tablenode == null)
                return us;
            Winista.Text.HtmlParser.Util.NodeList trs = null;
            for (int i = 0; i < tablenode.Children.Count; i++)
            {
                var tg = tablenode.Children[i] as Winista.Text.HtmlParser.ITag;
                if (tg == null)
                    continue;
                if (tg.TagName == "TBODY")
                {
                    trs = tg.Children;
                    break;
                }
                if (tg.TagName == "TR")
                {
                    trs = tablenode.Children;
                    break;
                }
            }

            if (trs == null || trs.Count == 0)
                return us;
            for (int i = 0; i < trs.Count; i++)
            {
                var tg = trs[i] as Winista.Text.HtmlParser.ITag;
                if (tg == null || tg.TagName != "TR")
                    continue;
                //get first td
                Winista.Text.HtmlParser.ITag firsttd = null;
                for (int k = 0; k < trs[i].Children.Count; k++)
                {
                    var td_t = trs[i].Children[k] as Winista.Text.HtmlParser.ITag;
                    if (td_t != null && td_t.TagName == "TD")
                    {
                        firsttd = td_t;
                        break;
                    }
                }
                if (firsttd == null)
                    continue;
                //get div
                Winista.Text.HtmlParser.ITag td_div = null;
                for (int k = 0; k < firsttd.Children.Count; k++)
                {
                    var td_t_div = firsttd.Children[k] as Winista.Text.HtmlParser.ITag;
                    if (td_t_div != null && td_t_div.TagName == "DIV")
                    {
                        td_div = td_t_div;
                        break;
                    }
                }
                if (td_div == null)
                    continue;
                //GET A
                Winista.Text.HtmlParser.ITag td_div_a = null;
                for (int k = 0; k < td_div.Children.Count; k++)
                {
                    var td_t_div = td_div.Children[k] as Winista.Text.HtmlParser.ITag;
                    if (td_t_div != null && td_t_div.TagName == "A")
                    {
                        td_div_a = td_t_div;
                        break;
                    }
                }
                if (td_div_a == null)
                    continue;
                us.Add(td_div_a.ToPlainTextString().Trim());
            }
            return us;

        }
		/// <summary> Scan the tag.
		/// For this implementation, the only operation is to perform the tag's
		/// semantic action.
		/// </summary>
		/// <param name="tag">The tag to scan.
		/// </param>
		/// <param name="lexer">Provides html page access.
		/// </param>
		/// <param name="stack">The parse stack. May contain pending tags that enclose
		/// this tag.
		/// </param>
		/// <returns> The resultant tag (may be unchanged).
		/// </returns>
		public virtual ITag Scan(ITag tag, Winista.Text.HtmlParser.Lex.Lexer lexer, NodeList stack)
		{
			tag.DoSemanticAction();
			
			return (tag);
		}