Class XdocParser

    • Constructor Detail

      • XdocParser

        public XdocParser()
    • Method Detail

      • parse

        public void parse​(java.io.Reader source,
                          Sink sink)
                   throws ParseException
        Parses the given source model and emits Doxia events into the given sink.
        Specified by:
        parse in interface Parser
        Overrides:
        parse in class XhtmlBaseParser
        Parameters:
        source - not null reader that provides the source document. You could use newReader methods from ReaderFactory.
        sink - A sink that consumes the Doxia events.
        Throws:
        ParseException - if the model could not be parsed.
      • handleStartTag

        protected void handleStartTag​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                      Sink sink)
                               throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                      MacroExecutionException
        Goes through the possible start tags. Just calls XhtmlBaseParser.baseStartTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.
        Overrides:
        handleStartTag in class XhtmlBaseParser
        Parameters:
        parser - A parser, not null.
        sink - the sink to receive the events.
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - if there's a problem parsing the model
        MacroExecutionException - if there's a problem executing a macro
      • handleEndTag

        protected void handleEndTag​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                    Sink sink)
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                    MacroExecutionException
        Goes through the possible end tags. Just calls XhtmlBaseParser.baseEndTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.
        Overrides:
        handleEndTag in class XhtmlBaseParser
        Parameters:
        parser - A parser, not null.
        sink - the sink to receive the events.
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - if there's a problem parsing the model
        MacroExecutionException - if there's a problem executing a macro
      • consecutiveSections

        protected void consecutiveSections​(int newLevel,
                                           Sink sink)
        Make sure sections are nested consecutively.

        HTML doesn't have any sections, only sectionTitles (<h2> etc), that means we have to open close any sections that are missing in between.

        For instance, if the following sequence is parsed:

         <h3></h3>
         <h6></h6>
         
        we have to insert two section starts before we open the <h6>. In the following sequence
         <h6></h6>
         <h3></h3>
         
        we have to close two sections before we open the <h3>.

        The current level is set to newLevel afterwards.

        Overrides:
        consecutiveSections in class XhtmlBaseParser
        Parameters:
        newLevel - the new section level, all upper levels have to be closed.
        sink - the sink to receive the events.