internal void WriteAttribute(TextWriter outText, HtmlAttribute att) { string quote = (att.QuoteType == AttributeValueQuote.DoubleQuote) ? "\"" : "'"; string name; if (this._ownerdocument.OptionOutputAsXml) { name = (this._ownerdocument.OptionOutputUpperCase ? att.XmlName.ToUpper() : att.XmlName); if (this._ownerdocument.OptionOutputOriginalCase) { name = att.OriginalName; } outText.Write(string.Concat(new string[] { " ", name, "=", quote, HtmlEntity.Entitize(att.XmlValue), quote })); return; } name = (this._ownerdocument.OptionOutputUpperCase ? att.Name.ToUpper() : (this.OwnerDocument.OptionOutputOriginalCase ? att.OriginalName : att.Name)); if (!this._ownerdocument.OptionOutputOptimizeAttributeValues) { outText.Write(' '); outText.Write(name); outText.Write('='); outText.Write(quote); outText.Write(HtmlEntity.Entitize(att.Value)); outText.Write(quote); return; } if (att.Value.IndexOfAny(new char[] { '\n', '\r', '\t', ' ' }) < 0) { outText.Write(" " + name + "=" + HtmlEntity.Entitize(att.Value)); return; } outText.Write(string.Concat(new string[] { " ", name, "=", quote, HtmlEntity.Entitize(att.Value), quote })); }
internal void WriteTo(TextWriter outText, bool writeDocumentNode) { switch (this._nodetype) { case HtmlNodeType.Document: if (this._ownerdocument.OptionOutputAsXml) { #if SALTARELLE outText.Write("<?xml version=\"1.0\"?>"); #else outText.Write("<?xml version=\"1.0\" encoding=\"" + (this._ownerdocument.DeclaredEncoding ?? Encoding.UTF8).WebName + "\"?>"); #endif if (this._ownerdocument.DocumentNode.HasChildNodes) { int num = this._ownerdocument.DocumentNode.ChildNodes.Count; if (num > 0) { HtmlNode xmlDeclaration = this._ownerdocument.GetXmlDeclaration(); if (xmlDeclaration != null) { num--; } if (num > 1) { if (this._ownerdocument.OptionOutputUpperCase) { outText.Write("<SPAN>"); this.WriteContentTo(outText); outText.Write("</SPAN>"); return; } outText.Write("<span>"); this.WriteContentTo(outText); outText.Write("</span>"); return; } } } } if (writeDocumentNode) { outText.Write("<?document"); this.WriteAttributes(outText, false); outText.Write("?>"); } this.WriteContentTo(outText); return; case HtmlNodeType.Element: { string text = this._ownerdocument.OptionOutputUpperCase ? this.TagName.ToUpper() : this.TagName; if (this._ownerdocument.OptionOutputOriginalCase) { text = this.OriginalName; } if (this._ownerdocument.OptionOutputAsXml) { if (text.Length <= 0) { break; } if (text[0] == '?') { return; } if (text.Trim().Length == 0) { return; } text = HtmlDocument.GetXmlName(text); } outText.Write("<" + text); this.WriteAttributes(outText, false); if (this.HasChildNodes) { outText.Write(">"); bool flag = false; if (this._ownerdocument.OptionOutputAsXml && HtmlNode.IsCDataElement(this.TagName)) { flag = true; outText.Write("\r\n//<![CDATA[\r\n"); } if (flag) { if (this.HasChildNodes) { this.ChildNodes[0].WriteTo(outText); } outText.Write("\r\n//]]>//\r\n"); } else { this.WriteContentTo(outText); } outText.Write("</" + text); if (!this._ownerdocument.OptionOutputAsXml) { this.WriteAttributes(outText, true); } outText.Write(">"); return; } if (HtmlNode.IsEmptyElement(this.TagName)) { if (this._ownerdocument.OptionWriteEmptyNodes || this._ownerdocument.OptionOutputAsXml) { outText.Write(" />"); return; } if (this.TagName.Length > 0 && this.TagName[0] == '?') { outText.Write("?"); } outText.Write(">"); return; } else { outText.Write("></" + text + ">"); } break; } case HtmlNodeType.Comment: { string text2 = ((HtmlCommentNode)this).Comment; if (this._ownerdocument.OptionOutputAsXml) { outText.Write("<!--" + HtmlNode.GetXmlComment((HtmlCommentNode)this) + " -->"); return; } outText.Write(text2); return; } case HtmlNodeType.Text: { HtmlTextNode htmlTextNode = (HtmlTextNode)this; string text2 = htmlTextNode.Text; if (!htmlTextNode.IsPcData) { outText.Write(HtmlEntity.Entitize(text2)); return; } bool optionOutputAsXml = this._ownerdocument.OptionOutputAsXml; if (optionOutputAsXml) { outText.Write("<![CDATA["); } outText.Write(htmlTextNode.Text); if (optionOutputAsXml) { outText.Write("]]>"); return; } break; } default: return; } }