public void parse()

in doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java [104:148]


    public void parse(Reader source, Sink sink, String reference) throws ParseException {
        init();

        Reader src = source;

        // 1 first parsing if validation is required
        if (isValidate()) {
            String content;
            try {
                content = IOUtils.toString(new BufferedReader(src));
            } catch (IOException e) {
                throw new ParseException("Error reading the model", e);
            }

            XmlValidator validator = new XmlValidator();
            validator.setDefaultHandler(new XmlValidator.MessagesErrorHandler());
            validator.setEntityResolver(new CachedFileEntityResolver());

            validator.validate(content);

            src = new StringReader(content);
        }

        // 2 second parsing to process
        try {
            XmlPullParser parser = addDefaultEntities
                    ? new MXParser(EntityReplacementMap.defaultEntityReplacementMap)
                    : new MXParser();

            parser.setInput(src);

            // allow parser initialization, e.g. for additional entities in XHTML
            // Note: do it after input is set, otherwise values are reset
            initXmlParser(parser);

            parseXml(parser, getWrappedSink(sink), reference);
        } catch (XmlPullParserException ex) {
            throw new ParseException("Error parsing the model", ex, ex.getLineNumber(), ex.getColumnNumber());
        } catch (MacroExecutionException ex) {
            throw new ParseException("Macro execution failed", ex);
        }

        setSecondParsing(false);
        init();
    }