Exemple #1
0
        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
            }));
        }
Exemple #2
0
        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;
            }
        }