Esempio n. 1
0
        void TryProcessCDATA()
        {
            tempBuilder.Clear();
            if (TryParse("[CDATA[", true, tempBuilder))
            {
                var contentPosition = GetSourceLocation();
                int endPosition     = position - 1;
                while (true)
                {
                    if (c == ']')
                    {
                        c = NextChar();
                        if (c == ']')
                        {
                            c = NextChar();
                            if (c == '>')
                            {
                                c = NextChar();
                                break;
                            }
                        }
                    }
                    else if (c == 0)
                    {
                        goto onerror;
                    }

                    endPosition = position;
                    c           = NextChar();
                }

                tempBuilder.Clear();
                var tag = new HtmlCDATA()
                {
                    Location = startTagLocation,
                    Slice    = new StringSlice(text, contentPosition.Position, endPosition)
                };
                CurrentParent.AppendChild(tag);
                return;
            }

onerror:
            tempBuilder.Clear();

            Error(c == 0
                ? $"Invalid EOF found while parsing <![CDATA["
                : $"Invalid character '{c}' found while parsing <![CDATA[");

            GetTextNode(startTagLocation).Append(text, startTagLocation.Position, position - 1);
        }
Esempio n. 2
0
 protected override void Write(HtmlCDATA node)
 {
 }
Esempio n. 3
0
 protected virtual void Write(HtmlCDATA node)
 {
     Write("<![CDATA[");
     Write(node.Slice.ToString());
     Write("]]>");
 }
Esempio n. 4
0
 protected override void Write(HtmlCDATA node)
 {
     Start("!cda");
     base.Write(node);
     FlushDOM();
 }