Beispiel #1
0
 internal void Emit(Token token)
 {
     Validate.IsFalse(isEmitPending, "There is an unread token pending!");
     emitPending   = token;
     isEmitPending = true;
     if (token.type == iText.StyledXmlParser.Jsoup.Parser.TokenType.StartTag)
     {
         Token.StartTag startTag = (Token.StartTag)token;
         lastStartTag = startTag.tagName;
         if (startTag.selfClosing)
         {
             selfClosingFlagAcknowledged = false;
         }
     }
     else
     {
         if (token.type == iText.StyledXmlParser.Jsoup.Parser.TokenType.EndTag)
         {
             Token.EndTag endTag = (Token.EndTag)token;
             if (endTag.attributes != null)
             {
                 Error("Attributes incorrectly present on end tag");
             }
         }
     }
 }
Beispiel #2
0
 internal virtual iText.StyledXmlParser.Jsoup.Nodes.Element InsertEmpty(Token.StartTag startTag)
 {
     iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(startTag.Name(
                                                                                                     ));
     iText.StyledXmlParser.Jsoup.Nodes.Element el = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, baseUri,
                                                                                                  startTag.attributes);
     InsertNode(el);
     if (startTag.IsSelfClosing())
     {
         if (tag.IsKnownTag())
         {
             if (tag.IsSelfClosing())
             {
                 tokeniser.AcknowledgeSelfClosingFlag();
             }
         }
         else
         {
             // if not acked, promulagates error
             // unknown tag, remember this is self closing for output
             tag.SetSelfClosing();
             tokeniser.AcknowledgeSelfClosingFlag();
         }
     }
     // not an distinct error
     return(el);
 }
Beispiel #3
0
        internal virtual FormElement InsertForm(Token.StartTag startTag, bool onStack)
        {
            iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(startTag.Name(
                                                                                                            ));
            FormElement el = new FormElement(tag, baseUri, startTag.attributes);

            SetFormElement(el);
            InsertNode(el);
            if (onStack)
            {
                stack.Add(el);
            }
            return(el);
        }
Beispiel #4
0
 internal virtual iText.StyledXmlParser.Jsoup.Nodes.Element Insert(Token.StartTag startTag)
 {
     // handle empty unknown tags
     // when the spec expects an empty tag, will directly hit insertEmpty, so won't generate this fake end tag.
     if (startTag.IsSelfClosing())
     {
         iText.StyledXmlParser.Jsoup.Nodes.Element el = InsertEmpty(startTag);
         stack.Add(el);
         tokeniser.Transition(TokeniserState.Data);
         // handles <script />, otherwise needs breakout steps from script data
         tokeniser.Emit(((Token.Tag)emptyEnd.Reset()).Name(el.TagName()));
         // ensure we get out of whatever state we are in. emitted for yielded processing
         return(el);
     }
     iText.StyledXmlParser.Jsoup.Nodes.Element el_1 = new iText.StyledXmlParser.Jsoup.Nodes.Element(iText.StyledXmlParser.Jsoup.Parser.Tag
                                                                                                    .ValueOf(startTag.Name()), baseUri, startTag.attributes);
     Insert(el_1);
     return(el_1);
 }
Beispiel #5
0
 internal virtual iText.StyledXmlParser.Jsoup.Nodes.Element Insert(Token.StartTag startTag)
 {
     iText.StyledXmlParser.Jsoup.Parser.Tag tag = iText.StyledXmlParser.Jsoup.Parser.Tag.ValueOf(startTag.Name(
                                                                                                     ));
     // todo: wonder if for xml parsing, should treat all tags as unknown? because it's not html.
     iText.StyledXmlParser.Jsoup.Nodes.Element el = new iText.StyledXmlParser.Jsoup.Nodes.Element(tag, baseUri,
                                                                                                  startTag.attributes);
     InsertNode(el);
     if (startTag.IsSelfClosing())
     {
         tokeniser.AcknowledgeSelfClosingFlag();
         if (!tag.IsKnownTag())
         {
             // unknown tag, remember this is self closing for output. see above.
             tag.SetSelfClosing();
         }
     }
     else
     {
         stack.Add(el);
     }
     return(el);
 }