Ejemplo n.º 1
0
 /// <summary>
 /// 解析HTML时遇到结束标签时的处理
 /// </summary>
 /// <param name="myReader"></param>
 /// <param name="vTagName"></param>
 /// <returns></returns>
 internal virtual bool MeetEndTag(HTMLTextReader myReader, string vTagName)
 {
     if (vTagName == this.TagName || this.CheckChildTagName(vTagName) == false)
     {
         myReader.MoveAfter('>');
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 处理结束标签
 /// </summary>
 /// <param name="myReader"></param>
 /// <param name="vTagName"></param>
 /// <returns></returns>
 internal override bool MeetEndTag(HTMLTextReader myReader, string vTagName)
 {
     if (vTagName == StringConstTagName.Head)
     {
         myReader.MoveAfter('>');
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 加载内容
 /// </summary>
 /// <param name="myReader">HTML文本读取器</param>
 /// <returns>操作是否成功</returns>
 internal virtual bool InnerRead(HTMLTextReader myReader)
 {
     if (this.HasText)
     {
         // 加载文本内容
         string vText = myReader.ReadString();
         if (myReader.StartWidth("</" + this.TagName))
         {
             myReader.MoveAfter('>');
         }
         this.Text = vText;
     }
     return(true);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 从HTML文本读取器读取数据并加载子元素
        /// </summary>
        /// <param name="myReader">HTML文本读取器</param>
        /// <returns>操作是否成功</returns>
        internal override bool InnerRead(HTMLTextReader myReader)
        {
            string strTagName;

            while (!myReader.EOF)
            {
                string strText = myReader.ReadString();
                if (strText != null && this.CheckChildTagName(StringConstTagName.TextNode))
                {
                    HTMLTextNodeElement txt = new HTMLTextNodeElement();
                    txt.Text = strText;
                    AppendChild(txt);
                }
                if (myReader.EOF)
                {
                    break;
                }
                if (myReader.NextChar == '!')
                {
                    if (myReader.StartWidth("<!--"))
                    {
                        myReader.MoveStep(4);
                        strText = myReader.ReadUntil("-->");
                        if (strText != null)
                        {
                            if (this.CheckChildTagName(StringConstTagName.Comment))
                            {
                                HTMLCommentElement com = new HTMLCommentElement();
                                com.Text = strText;
                                AppendChild(com);
                            }
                        }
                        myReader.MoveStep(3);
                        continue;
                    }
                    else
                    {
                        myReader.MoveAfter('>');
                        myReader.SkipWhiteSpace();
                        continue;
                    }
                }
                //				else if( myReader.NextChar == '/')
                //				{
                //					if( myReader.StartWidth("</" + this.TagName ))
                //					{
                //						myReader.MoveAfter('>');
                //						break;
                //					}
                //					else
                //					{
                //						myReader.MoveAfter('>');
                //						continue;
                //					}
                //				}
                else if (myReader.NextChar == '/')
                {
                    myReader.MoveStep(2);
                    string vEndTag = myReader.PeekWord();
                    myReader.MoveStep(-2);
                    //					if( ( vEndTag != null ) && vEndTag.ToLower() == this.TagName )
                    //					{
                    //						myReader.MoveAfter('>');
                    //						break;
                    //					}
                    if ((vEndTag != null) && (MeetEndTag(myReader, vEndTag.ToLower())))
                    {
                        break;
                    }
                    else
                    {
                        myReader.MoveAfter('>');
                        continue;
                    }
                }
                else if (myReader.NextChar == '?')
                {
                    myReader.MoveAfter('>');
                    continue;
                }
                myReader.MoveNext();
                strTagName = myReader.ReadWord();
                if (strTagName != null)
                {
                    strTagName = strTagName.ToLower();
                    if (!BeforeLoadTag(strTagName))
                    {
                        myReader.MovePreTo('<');
                        break;
                    }
                    if (this.CheckChildTagName(strTagName))
                    {
                        HTMLElement NewElement = myOwnerDocument.InnerCreateElement(strTagName, this);
                        if (NewElement != null)
                        {
                            AppendChild(NewElement);
                            NewElement.Read(myReader);
                        }
                        else
                        {
                            myReader.ReadToEndTag(strTagName);
                        }
                    }
                }
            }            //while
            return(true);
        }