/// <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); }