Example usage for org.dom4j.io STAXEventReader readDocument

List of usage examples for org.dom4j.io STAXEventReader readDocument

Introduction

In this page you can find the example usage for org.dom4j.io STAXEventReader readDocument.

Prototype

public Document readDocument(XMLEventReader reader) throws XMLStreamException 

Source Link

Document

Reads a DOM4J Document from the provided stream.

Usage

From source file:org.hibernate.boot.jaxb.internal.MappingBinder.java

License:LGPL

private Document toDom4jDocument(XMLEventReader jpaOrmXmlEventReader, Origin origin) {
    // todo : do we need to build a DocumentFactory instance for use here?
    //      historically we did that to set TCCL since, iirc, dom4j uses TCCL
    org.dom4j.io.STAXEventReader staxToDom4jReader = new STAXEventReader() {
        @Override/*ww w . ja va  2  s .  co m*/
        public Node readNode(XMLEventReader reader) throws XMLStreamException {
            // dom4j's reader misses handling of XML comments.  So if the document we
            // are trying to read has comments this process will blow up.  So we
            // override that to add that support as best we can
            XMLEvent event = reader.peek();
            if (javax.xml.stream.events.Comment.class.isInstance(event)) {
                return super.readComment(reader);
            }
            return super.readNode(reader);
        }
    };
    try {
        return staxToDom4jReader.readDocument(jpaOrmXmlEventReader);
    } catch (XMLStreamException e) {
        throw new MappingException(
                "An error occurred transforming orm.xml document from StAX to dom4j representation ", e,
                origin);
    }
}

From source file:org.hibernate.internal.util.xml.MappingReader.java

License:LGPL

private Document toDom4jDocument(XMLEventReader staxEventReader, Origin origin) {
    STAXEventReader dom4jStaxEventReader = new STAXEventReader();
    try {/*from  ww  w .  j a  v  a  2 s  . c  o m*/
        // the dom4j converter class is touchy about comments (aka, comments make it implode)
        // so wrap the event stream in a filtering stream to filter out comment events
        staxEventReader = new FilteringXMLEventReader(staxEventReader) {
            @Override
            protected XMLEvent filterEvent(XMLEvent event, boolean peek) {
                return event.getEventType() == XMLStreamConstants.COMMENT ? null : event;
            }
        };

        return dom4jStaxEventReader.readDocument(staxEventReader);
    } catch (XMLStreamException e) {
        throw new InvalidMappingException("Unable to read StAX source as dom4j Document for processing", origin,
                e);
    }
}