List of usage examples for org.dom4j.io STAXEventReader readDocument
public Document readDocument(XMLEventReader reader) throws XMLStreamException
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); } }