示例#1
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);
        }
示例#2
0
        /// <summary>
        /// 创建元素对象实例
        /// </summary>
        /// <param name="TagName">HTML标签名称</param>
        /// <param name="vParent">创建的元素的父节点</param>
        /// <returns>创建的HTML元素对象</returns>
        internal HTMLElement InnerCreateElement(string TagName, HTMLContainer vParent)
        {
            if (HTMLTextReader.isBlankString(TagName))
            {
                return(null);
            }
            HTMLElement NewElement = null;

            TagName = TagName.ToLower().Trim();
            switch (TagName)
            {
            case StringConstTagName.HTML:
                if (vParent == null || vParent == this)
                {
                    NewElement = this;
                }
                else
                {
                    NewElement = new HTMLDivElement();
                }
                break;

            case StringConstTagName.Head:
                if (vParent is HTMLDocument)
                {
                    NewElement = this.Head;
                    if (NewElement == null)
                    {
                        NewElement = new HTMLHeadElement();
                    }
                }
                break;

            case StringConstTagName.Body:
                if (vParent is HTMLDocument)
                {
                    NewElement = this.Body;
                    if (NewElement == null)
                    {
                        NewElement = new HTMLBodyElement();
                    }
                }
                else
                {
                    NewElement = new HTMLDivElement();
                }
                break;

            case StringConstTagName.IEDevicerect:
                NewElement = new HTMLIEDeviceRect();
                break;

            case StringConstTagName.IEHeaderFooter:
                NewElement = new HTMLIEHeaderfooter();
                break;

            case StringConstTagName.IELayoutrect:
                NewElement = new HTMLIELayoutrect();
                break;

            case StringConstTagName.IETemplatePrinter:
                NewElement = new HTMLIETemplateprinter();
                break;

            case StringConstTagName.H1:
                NewElement = new HTMLHnElement();
                ((HTMLHnElement)NewElement).Level = 1;
                break;

            case StringConstTagName.H2:
                NewElement = new HTMLHnElement();
                ((HTMLHnElement)NewElement).Level = 2;
                break;

            case StringConstTagName.H3:
                NewElement = new HTMLHnElement();
                ((HTMLHnElement)NewElement).Level = 3;
                break;

            case StringConstTagName.H4:
                NewElement = new HTMLHnElement();
                ((HTMLHnElement)NewElement).Level = 4;
                break;

            case StringConstTagName.H5:
                NewElement = new HTMLHnElement();
                ((HTMLHnElement)NewElement).Level = 5;
                break;

            case StringConstTagName.H6:
                NewElement = new HTMLHnElement();
                ((HTMLHnElement)NewElement).Level = 6;
                break;

            case StringConstTagName.Input:
                NewElement = new HTMLInputElement();
                break;

            case StringConstTagName.TextArea:
                NewElement = new HTMLTextAreaElement();
                break;

            case StringConstTagName.Select:
                NewElement = new HTMLSelectElement();
                break;

            case StringConstTagName.Option:
                NewElement = new HTMLOptionElement();
                break;

            case StringConstTagName.Form:
                NewElement = new HTMLFormElement();
                break;

            case StringConstTagName.A:
                NewElement = new HTMLAElement();
                break;

            case StringConstTagName.B:
                NewElement = new HTMLBElement();
                break;

            case StringConstTagName.Pre:
                NewElement = new HTMLPreElement();
                break;

            case StringConstTagName.Span:
                NewElement = new HTMLSpanElement();
                break;

            case StringConstTagName.Div:
                NewElement = new HTMLDivElement();
                break;

            case StringConstTagName.P:
                NewElement = new HTMLPElement();
                break;

            case StringConstTagName.Br:
                NewElement = new HTMLBRElement();
                break;

            case StringConstTagName.Applet:
                NewElement = new HTMLAppletElement();
                break;

            case StringConstTagName.TextNode:
                NewElement = new HTMLTextNodeElement();
                break;

            case StringConstTagName.Object:
                NewElement = new HTMLObjectElement();
                break;

            case StringConstTagName.Script:
                NewElement = new HTMLScriptElement();
                break;

            case StringConstTagName.Link:
                NewElement = new HTMLLinkElement();
                break;

            case StringConstTagName.Font:
                NewElement = new HTMLFontElement();
                break;

            case StringConstTagName.Meta:
                NewElement = new HTMLMetaElement();
                break;

            case StringConstTagName.BGSound:
                NewElement = new HTMLBGSoundElement();
                break;

            case StringConstTagName.Param:
                NewElement = new HTMLParamElement();
                break;

            case StringConstTagName.Comment:
                NewElement = new HTMLCommentElement();
                break;

            case StringConstTagName.Hr:
                NewElement = new HTMLHRElement();
                break;

            case StringConstTagName.Table:
                NewElement = new HTMLTableElement();
                break;

            case StringConstTagName.TBody:
                NewElement = new HTMLTBodyElement();
                break;

            case StringConstTagName.Tr:
                NewElement = new HTMLTRElement();
                break;

            case StringConstTagName.Td:
                NewElement = new HTMLTDElement();
                break;

            case StringConstTagName.Col:
                NewElement = new HTMLColElement();
                break;

            case StringConstTagName.Style:
                NewElement = new HTMLStyleElement();
                break;

            case StringConstTagName.Img:
                NewElement = new HTMLImgElement();
                break;

            case StringConstTagName.Title:
                NewElement = new HTMLTitleElement();
                break;

            case StringConstTagName.UL:
                NewElement = new HTMLULElement();
                break;

            case StringConstTagName.LI:
                NewElement = new HTMLLIElement();
                break;

            case StringConstTagName.Map:
                NewElement = new HTMLMapElement();
                break;

            case StringConstTagName.Area:
                NewElement = new HTMLAreaElement();
                break;

            case StringConstTagName.HTAApplication:
                NewElement = new HTMLHTAApplicationElement();
                break;

            case StringConstTagName.FrameSet:
                NewElement = new HTMLFrameSetElement();
                break;

            case StringConstTagName.Frame:
                NewElement = new HTMLFrameElement();
                break;

            case StringConstTagName.Label:
                NewElement = new HTMLLabelElement();
                break;

            case StringConstTagName.Marquee:
                NewElement = new HTMLMarqueeElement();
                break;

            case StringConstTagName.IFrame:
                NewElement = new HTMLIFrameElement();
                break;

            case StringConstTagName.XML:
                NewElement = new HTMLXMLElement();
                break;

            case StringConstTagName.Sup:
                NewElement = new HTMLSupElement();
                break;

            case StringConstTagName.Sub:
                NewElement = new HTMLSubElement();
                break;

            case StringConstTagName.Nobr:
                NewElement = new HTMLNobarElement();
                break;

            default:
                NewElement = new HTMLUnknowElement();
                (( HTMLUnknowElement)NewElement).SetTagName(TagName);
                break;
            }
            if (NewElement != null)
            {
                NewElement.OwnerDocument = this;
                NewElement.Parent        = vParent;
            }
            return(NewElement);
        }