| /* XMLEventWriterImpl.java -- | |
| Copyright (C) 2005 Free Software Foundation, Inc. | |
| This file is part of GNU Classpath. | |
| GNU Classpath is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 2, or (at your option) | |
| any later version. | |
| GNU Classpath is distributed in the hope that it will be useful, but | |
| WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with GNU Classpath; see the file COPYING. If not, write to the | |
| Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | |
| 02110-1301 USA. | |
| Linking this library statically or dynamically with other modules is | |
| making a combined work based on this library. Thus, the terms and | |
| conditions of the GNU General Public License cover the whole | |
| combination. | |
| As a special exception, the copyright holders of this library give you | |
| permission to link this library with independent modules to produce an | |
| executable, regardless of the license terms of these independent | |
| modules, and to copy and distribute the resulting executable under | |
| terms of your choice, provided that you also meet, for each linked | |
| independent module, the terms and conditions of the license of that | |
| module. An independent module is a module which is not derived from | |
| or based on this library. If you modify this library, you may extend | |
| this exception to your version of the library, but you are not | |
| obligated to do so. If you do not wish to do so, delete this | |
| exception statement from your version. */ | |
| package gnu.xml.stream; | |
| import javax.xml.namespace.NamespaceContext; | |
| import javax.xml.namespace.QName; | |
| import javax.xml.stream.XMLEventReader; | |
| import javax.xml.stream.XMLEventWriter; | |
| import javax.xml.stream.XMLStreamConstants; | |
| import javax.xml.stream.XMLStreamException; | |
| import javax.xml.stream.XMLStreamWriter; | |
| import javax.xml.stream.events.Attribute; | |
| import javax.xml.stream.events.Characters; | |
| import javax.xml.stream.events.Comment; | |
| import javax.xml.stream.events.DTD; | |
| import javax.xml.stream.events.Namespace; | |
| import javax.xml.stream.events.ProcessingInstruction; | |
| import javax.xml.stream.events.StartDocument; | |
| import javax.xml.stream.events.StartElement; | |
| import javax.xml.stream.events.XMLEvent; | |
| /** | |
| * Writer to write events to an underlying XML stream writer. | |
| * | |
| * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> | |
| */ | |
| public class XMLEventWriterImpl | |
| implements XMLEventWriter | |
| { | |
| protected final XMLStreamWriter writer; | |
| protected XMLEventWriterImpl(XMLStreamWriter writer) | |
| { | |
| this.writer = writer; | |
| } | |
| public void flush() | |
| throws XMLStreamException | |
| { | |
| writer.flush(); | |
| } | |
| public void close() | |
| throws XMLStreamException | |
| { | |
| writer.close(); | |
| } | |
| public void add(XMLEvent event) | |
| throws XMLStreamException | |
| { | |
| QName name; | |
| String uri; | |
| switch (event.getEventType()) | |
| { | |
| case XMLStreamConstants.START_ELEMENT: | |
| StartElement startElement = event.asStartElement(); | |
| name = startElement.getName(); | |
| uri = name.getNamespaceURI(); | |
| if (uri != null && !"".equals(uri)) | |
| writer.writeStartElement(name.getPrefix(), name.getLocalPart(), uri); | |
| else | |
| writer.writeStartElement(name.getLocalPart()); | |
| break; | |
| case XMLStreamConstants.END_ELEMENT: | |
| writer.writeEndElement(); | |
| break; | |
| case XMLStreamConstants.ATTRIBUTE: | |
| Attribute attribute = (Attribute) event; | |
| name = attribute.getName(); | |
| uri = name.getNamespaceURI(); | |
| if (uri != null && !"".equals(uri)) | |
| writer.writeAttribute(name.getPrefix(), uri, name.getLocalPart(), | |
| attribute.getValue()); | |
| else | |
| writer.writeAttribute(name.getLocalPart(), attribute.getValue()); | |
| break; | |
| case XMLStreamConstants.NAMESPACE: | |
| Namespace namespace = (Namespace) event; | |
| uri = namespace.getNamespaceURI(); | |
| writer.writeNamespace(namespace.getPrefix(), uri); | |
| break; | |
| case XMLStreamConstants.PROCESSING_INSTRUCTION: | |
| ProcessingInstruction pi = (ProcessingInstruction) event; | |
| String data = pi.getData(); | |
| if (data == null) | |
| writer.writeProcessingInstruction(pi.getTarget()); | |
| else | |
| writer.writeProcessingInstruction(pi.getTarget(), data); | |
| break; | |
| case XMLStreamConstants.COMMENT: | |
| Comment comment = (Comment) event; | |
| writer.writeComment(comment.getText()); | |
| break; | |
| case XMLStreamConstants.START_DOCUMENT: | |
| StartDocument startDocument = (StartDocument) event; | |
| writer.writeStartDocument(startDocument.getVersion()); | |
| break; | |
| case XMLStreamConstants.END_DOCUMENT: | |
| writer.writeEndDocument(); | |
| break; | |
| case XMLStreamConstants.DTD: | |
| DTD dtd = (DTD) event; | |
| writer.writeDTD(dtd.getDocumentTypeDeclaration()); | |
| break; | |
| case XMLStreamConstants.CHARACTERS: | |
| case XMLStreamConstants.SPACE: | |
| Characters characters = event.asCharacters(); | |
| writer.writeCharacters(characters.getData()); | |
| break; | |
| case XMLStreamConstants.CDATA: | |
| Characters cdata = event.asCharacters(); | |
| writer.writeCData(cdata.getData()); | |
| break; | |
| } | |
| } | |
| public void add(XMLEventReader reader) | |
| throws XMLStreamException | |
| { | |
| while (reader.hasNext()) | |
| add(reader.nextEvent()); | |
| } | |
| public String getPrefix(String uri) | |
| throws XMLStreamException | |
| { | |
| return writer.getPrefix(uri); | |
| } | |
| public void setPrefix(String prefix, String uri) | |
| throws XMLStreamException | |
| { | |
| writer.setPrefix(prefix, uri); | |
| } | |
| public void setDefaultNamespace(String uri) | |
| throws XMLStreamException | |
| { | |
| writer.setDefaultNamespace(uri); | |
| } | |
| public void setNamespaceContext(NamespaceContext context) | |
| throws XMLStreamException | |
| { | |
| writer.setNamespaceContext(context); | |
| } | |
| public NamespaceContext getNamespaceContext() | |
| { | |
| return writer.getNamespaceContext(); | |
| } | |
| } | |