List of usage examples for javax.xml.stream XMLStreamConstants DTD
int DTD
To view the source code for javax.xml.stream XMLStreamConstants DTD.
Click Source Link
From source file:org.apache.axiom.om.impl.builder.StAXOMBuilder.java
/** * Method next.// w w w. java2 s . co m * * @return Returns int. * @throws OMException */ public int next() throws OMException { try { // We need a loop here because we may decide to skip an event while (true) { if (done) { throw new OMException(); } int token = parserNext(); if (!cache) { return token; } // The current token should be the same as the // one just obtained. This bit of code is used to // detect invalid parser state. if (doTrace) { int currentParserToken = parser.getEventType(); if (currentParserToken != token) { log.debug("WARNING: The current state of the parser is not equal to the " + "state just received from the parser. The current state in the paser is " + XMLEventUtils.getEventTypeString(currentParserToken) + " the state just received is " + XMLEventUtils.getEventTypeString(token)); /* throw new OMException("The current token " + token + " does not match the current event " + "reported by the parser token. The parser did not update its state correctly. " + "The parser is " + parser); */ } } // Now log the current state of the parser if (doTrace) { logParserState(); } switch (token) { case XMLStreamConstants.START_ELEMENT: elementLevel++; lastNode = createNextOMElement(); break; case XMLStreamConstants.CHARACTERS: lastNode = createOMText(XMLStreamConstants.CHARACTERS); break; case XMLStreamConstants.CDATA: lastNode = createOMText(XMLStreamConstants.CDATA); break; case XMLStreamConstants.END_ELEMENT: endElement(); elementLevel--; break; case XMLStreamConstants.END_DOCUMENT: done = true; ((OMContainerEx) this.document).setComplete(true); break; case XMLStreamConstants.SPACE: try { lastNode = createOMText(XMLStreamConstants.SPACE); if (lastNode == null) { continue; } } catch (OMHierarchyException ex) { // The OM implementation doesn't allow text nodes at the current // position in the tree. Since it is only whitespace, we can safely // skip this event. continue; } break; case XMLStreamConstants.COMMENT: lastNode = createComment(); break; case XMLStreamConstants.DTD: createDTD(); break; case XMLStreamConstants.PROCESSING_INSTRUCTION: lastNode = createPI(); break; case XMLStreamConstants.ENTITY_REFERENCE: lastNode = createOMText(XMLStreamConstants.ENTITY_REFERENCE); break; default: throw new OMException(); } return token; } } catch (XMLStreamException e) { throw new OMException(e); } }
From source file:org.apache.axiom.om.impl.builder.StAXOMBuilder.java
/** * Dump the current event of the parser. *//* w w w . j av a 2 s .c o m*/ protected void logParserState() { if (doTrace) { int currentEvent = parser.getEventType(); switch (currentEvent) { case XMLStreamConstants.START_ELEMENT: log.trace("START_ELEMENT: "); log.trace(" QName: " + parser.getName()); break; case XMLStreamConstants.START_DOCUMENT: log.trace("START_DOCUMENT: "); break; case XMLStreamConstants.CHARACTERS: log.trace("CHARACTERS: "); // This can bust up a datahandler //log.trace( "[" + parser.getText() + "]"); break; case XMLStreamConstants.CDATA: log.trace("CDATA: "); // This can but //log.trace( "[" + parser.getText() + "]"); break; case XMLStreamConstants.END_ELEMENT: log.trace("END_ELEMENT: "); log.trace(" QName: " + parser.getName()); break; case XMLStreamConstants.END_DOCUMENT: log.trace("END_DOCUMENT: "); break; case XMLStreamConstants.SPACE: log.trace("SPACE: "); //log.trace( "[" + parser.getText() + "]"); break; case XMLStreamConstants.COMMENT: log.trace("COMMENT: "); //log.trace( "[" + parser.getText() + "]"); break; case XMLStreamConstants.DTD: log.trace("DTD: "); log.trace("[" + parser.getText() + "]"); break; case XMLStreamConstants.PROCESSING_INSTRUCTION: log.trace("PROCESSING_INSTRUCTION: "); log.trace(" [" + parser.getPITarget() + "][" + parser.getPIData() + "]"); break; case XMLStreamConstants.ENTITY_REFERENCE: log.trace("ENTITY_REFERENCE: "); log.trace(" " + parser.getLocalName() + "[" + parser.getText() + "]"); break; default: log.trace("UNKNOWN_STATE: " + currentEvent); } } }
From source file:org.apache.axiom.om.util.OMXMLStreamReaderValidator.java
/** * Dump the current event of the delegate. *//*from www.j a v a 2 s .co m*/ protected void logParserState() { if (IS_ADV_DEBUG_ENABLED) { int currentEvent = delegate.getEventType(); switch (currentEvent) { case XMLStreamConstants.START_ELEMENT: log.trace("START_ELEMENT: "); log.trace(" QName: " + delegate.getName()); break; case XMLStreamConstants.START_DOCUMENT: log.trace("START_DOCUMENT: "); break; case XMLStreamConstants.CHARACTERS: log.trace("CHARACTERS: "); log.trace("[" + delegate.getText() + "]"); break; case XMLStreamConstants.CDATA: log.trace("CDATA: "); log.trace("[" + delegate.getText() + "]"); break; case XMLStreamConstants.END_ELEMENT: log.trace("END_ELEMENT: "); log.trace(" QName: " + delegate.getName()); break; case XMLStreamConstants.END_DOCUMENT: log.trace("END_DOCUMENT: "); break; case XMLStreamConstants.SPACE: log.trace("SPACE: "); log.trace("[" + delegate.getText() + "]"); break; case XMLStreamConstants.COMMENT: log.trace("COMMENT: "); log.trace("[" + delegate.getText() + "]"); break; case XMLStreamConstants.DTD: log.trace("DTD: "); log.trace("[" + delegate.getText() + "]"); break; case XMLStreamConstants.PROCESSING_INSTRUCTION: log.trace("PROCESSING_INSTRUCTION: "); log.trace(" [" + delegate.getPITarget() + "][" + delegate.getPIData() + "]"); break; case XMLStreamConstants.ENTITY_REFERENCE: log.trace("ENTITY_REFERENCE: "); log.trace(" " + delegate.getLocalName() + "[" + delegate.getText() + "]"); break; default: log.trace("UNKNOWN_STATE: " + currentEvent); } } }
From source file:org.apache.axiom.util.stax.debug.XMLStreamReaderValidator.java
/** * Dump the current event of the delegate. *//*from w ww.j a v a2 s.c o m*/ protected void logParserState() { if (IS_ADV_DEBUG_ENABLED) { int currentEvent = super.getEventType(); switch (currentEvent) { case XMLStreamConstants.START_ELEMENT: log.trace("START_ELEMENT: "); log.trace(" QName: " + super.getName()); break; case XMLStreamConstants.START_DOCUMENT: log.trace("START_DOCUMENT: "); break; case XMLStreamConstants.CHARACTERS: log.trace("CHARACTERS: "); log.trace("[" + super.getText() + "]"); break; case XMLStreamConstants.CDATA: log.trace("CDATA: "); log.trace("[" + super.getText() + "]"); break; case XMLStreamConstants.END_ELEMENT: log.trace("END_ELEMENT: "); log.trace(" QName: " + super.getName()); break; case XMLStreamConstants.END_DOCUMENT: log.trace("END_DOCUMENT: "); break; case XMLStreamConstants.SPACE: log.trace("SPACE: "); log.trace("[" + super.getText() + "]"); break; case XMLStreamConstants.COMMENT: log.trace("COMMENT: "); log.trace("[" + super.getText() + "]"); break; case XMLStreamConstants.DTD: log.trace("DTD: "); log.trace("[" + super.getText() + "]"); break; case XMLStreamConstants.PROCESSING_INSTRUCTION: log.trace("PROCESSING_INSTRUCTION: "); log.trace(" [" + super.getPITarget() + "][" + super.getPIData() + "]"); break; case XMLStreamConstants.ENTITY_REFERENCE: log.trace("ENTITY_REFERENCE: "); log.trace(" " + super.getLocalName() + "[" + super.getText() + "]"); break; default: log.trace("UNKNOWN_STATE: " + currentEvent); } } }
From source file:org.apache.synapse.commons.json.JsonDataSource.java
public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException { XMLStreamReader reader = getReader(); xmlWriter.writeStartDocument();//from w w w .j a v a 2 s .c om while (reader.hasNext()) { int x = reader.next(); switch (x) { case XMLStreamConstants.START_ELEMENT: xmlWriter.writeStartElement(reader.getPrefix(), reader.getLocalName(), reader.getNamespaceURI()); int namespaceCount = reader.getNamespaceCount(); for (int i = namespaceCount - 1; i >= 0; i--) { xmlWriter.writeNamespace(reader.getNamespacePrefix(i), reader.getNamespaceURI(i)); } int attributeCount = reader.getAttributeCount(); for (int i = 0; i < attributeCount; i++) { xmlWriter.writeAttribute(reader.getAttributePrefix(i), reader.getAttributeNamespace(i), reader.getAttributeLocalName(i), reader.getAttributeValue(i)); } break; case XMLStreamConstants.START_DOCUMENT: break; case XMLStreamConstants.CHARACTERS: xmlWriter.writeCharacters(reader.getText()); break; case XMLStreamConstants.CDATA: xmlWriter.writeCData(reader.getText()); break; case XMLStreamConstants.END_ELEMENT: xmlWriter.writeEndElement(); break; case XMLStreamConstants.END_DOCUMENT: xmlWriter.writeEndDocument(); break; case XMLStreamConstants.SPACE: break; case XMLStreamConstants.COMMENT: xmlWriter.writeComment(reader.getText()); break; case XMLStreamConstants.DTD: xmlWriter.writeDTD(reader.getText()); break; case XMLStreamConstants.PROCESSING_INSTRUCTION: xmlWriter.writeProcessingInstruction(reader.getPITarget(), reader.getPIData()); break; case XMLStreamConstants.ENTITY_REFERENCE: xmlWriter.writeEntityRef(reader.getLocalName()); break; default: throw new OMException(); } } xmlWriter.writeEndDocument(); xmlWriter.flush(); xmlWriter.close(); }
From source file:org.apereo.portal.xml.stream.IndentingXMLEventWriter.java
@Override public void add(XMLEvent event) throws XMLStreamException { switch (event.getEventType()) { case XMLStreamConstants.CHARACTERS: case XMLStreamConstants.CDATA: case XMLStreamConstants.SPACE: { wrappedWriter.add(event);//from w ww. j a va2s .com afterData(); return; } case XMLStreamConstants.START_ELEMENT: { beforeStartElement(); wrappedWriter.add(event); afterStartElement(); return; } case XMLStreamConstants.END_ELEMENT: { beforeEndElement(); wrappedWriter.add(event); afterEndElement(); return; } case XMLStreamConstants.START_DOCUMENT: case XMLStreamConstants.PROCESSING_INSTRUCTION: case XMLStreamConstants.COMMENT: case XMLStreamConstants.DTD: { beforeMarkup(); wrappedWriter.add(event); afterMarkup(); return; } case XMLStreamConstants.END_DOCUMENT: { wrappedWriter.add(event); afterEndDocument(); break; } default: { wrappedWriter.add(event); return; } } }
From source file:org.auraframework.impl.factory.SVGParser.java
@Override public SVGDef getDefinition(DefDescriptor<SVGDef> descriptor, TextSource<SVGDef> source) throws SVGParserException, QuickFixException { if (descriptor.getDefType() == DefType.SVG) { XMLStreamReader reader = null; String contents = source.getContents(); //If the file is too big throw before we parse the whole thing. SVGDef ret = new SVGDefHandler<>(descriptor, source).createDefinition(); try (StringReader stringReader = new StringReader(contents)) { reader = xmlInputFactory.createXMLStreamReader(stringReader); if (reader != null) { LOOP: while (reader.hasNext()) { int type = reader.next(); switch (type) { case XMLStreamConstants.END_DOCUMENT: break LOOP; //This is plain text inside the file case XMLStreamConstants.CHARACTERS: if (DISSALOWED_LIST.matcher(reader.getText()).matches()) { throw new InvalidDefinitionException( String.format("Text contains disallowed symbols: %s", reader.getText()), XMLParser.getLocation(reader, source)); }/*from w w w. jav a 2 s. c o m*/ break; case XMLStreamConstants.START_ELEMENT: String name = reader.getName().toString().toLowerCase(); if (!SVG_TAG_WHITELIST.contains(name)) { throw new InvalidDefinitionException( String.format("Invalid SVG tag specified: %s", name), XMLParser.getLocation(reader, source)); } for (int i = 0; i < reader.getAttributeCount(); i++) { QName qAttr = reader.getAttributeName(i); String attr = qAttr.getLocalPart(); if (SVG_ATTR_BLACKLIST.contains(attr)) { throw new InvalidDefinitionException( String.format("Invalid SVG attribute specified: %s", attr), XMLParser.getLocation(reader, source)); } } break; case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.COMMENT: case XMLStreamConstants.DTD: case XMLStreamConstants.SPACE: continue; default: throw new InvalidDefinitionException(String.format("Found unexpected element in xml."), XMLParser.getLocation(reader, source)); } } } } catch (XMLStreamException e) { throw new SVGParserException(StringEscapeUtils.escapeHtml4(e.getMessage())); } finally { if (reader != null) { try { reader.close(); } catch (XMLStreamException e) { //Well I tried to play nicely } } } return ret; } return null; }
From source file:org.auraframework.impl.svg.parser.SVGParser.java
@Override public SVGDef parse(DefDescriptor<SVGDef> descriptor, Source<SVGDef> source) throws SVGParserException, QuickFixException { if (descriptor.getDefType() == DefType.SVG) { XMLStreamReader reader = null; String contents = source.getContents(); //If the file is too big throw before we parse the whole thing. SVGDef ret = new SVGDefHandler<>(descriptor, source).createDefinition(); try (StringReader stringReader = new StringReader(contents)) { reader = xmlInputFactory.createXMLStreamReader(stringReader); if (reader != null) { LOOP: while (reader.hasNext()) { int type = reader.next(); switch (type) { case XMLStreamConstants.END_DOCUMENT: break LOOP; //This is plain text inside the file case XMLStreamConstants.CHARACTERS: if (DISSALOWED_LIST.matcher(reader.getText()).matches()) { throw new InvalidDefinitionException( String.format("Text contains disallowed symbols: %s", reader.getText()), XMLParser.getLocation(reader, source)); }//from ww w . j a v a 2 s . c o m break; case XMLStreamConstants.START_ELEMENT: String name = reader.getName().toString().toLowerCase(); if (!SVG_TAG_WHITELIST.contains(name)) { throw new InvalidDefinitionException( String.format("Invalid SVG tag specified: %s", name), XMLParser.getLocation(reader, source)); } for (int i = 0; i < reader.getAttributeCount(); i++) { QName qAttr = reader.getAttributeName(i); String attr = qAttr.getLocalPart(); if (SVG_ATTR_BLACKLIST.contains(attr)) { throw new InvalidDefinitionException( String.format("Invalid SVG attribute specified: %s", attr), XMLParser.getLocation(reader, source)); } } break; case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.COMMENT: case XMLStreamConstants.DTD: case XMLStreamConstants.SPACE: continue; default: throw new InvalidDefinitionException(String.format("Found unexpected element in xml."), XMLParser.getLocation(reader, source)); } } } } catch (XMLStreamException e) { throw new SVGParserException(StringEscapeUtils.escapeHtml4(e.getMessage())); } finally { if (reader != null) { try { reader.close(); } catch (XMLStreamException e) { //Well I tried to play nicely } } } return ret; } return null; }
From source file:org.pentaho.di.trans.steps.webservices.WebService.java
private void compatibleProcessRows(InputStream anXml, Object[] rowData, RowMetaInterface rowMeta, boolean ignoreNamespacePrefix, String encoding) throws KettleException { // First we should get the complete string // The problem is that the string can contain XML or any other format such as HTML saying the service is no longer // available. // We're talking about a WEB service here. // As such, to keep the original parsing scheme, we first read the content. // Then we create an input stream from the content again. // It's elaborate, but that way we can report on the failure more correctly. ////from w w w . j a v a 2s. co m String response = readStringFromInputStream(anXml, encoding); // Create a new reader to feed into the XML Input Factory below... // StringReader stringReader = new StringReader(response.toString()); // TODO Very empirical : see if we can do something better here try { XMLInputFactory vFactory = XMLInputFactory.newInstance(); XMLStreamReader vReader = vFactory.createXMLStreamReader(stringReader); Object[] outputRowData = RowDataUtil.allocateRowData(data.outputRowMeta.size()); int outputIndex = 0; boolean processing = false; boolean oneValueRowProcessing = false; for (int event = vReader.next(); vReader.hasNext(); event = vReader.next()) { switch (event) { case XMLStreamConstants.START_ELEMENT: // Start new code // START_ELEMENT= 1 // if (log.isRowLevel()) { logRowlevel("START_ELEMENT / " + vReader.getAttributeCount() + " / " + vReader.getNamespaceCount()); } // If we start the xml element named like the return type, // we start a new row // if (log.isRowLevel()) { logRowlevel("vReader.getLocalName = " + vReader.getLocalName()); } if (Const.isEmpty(meta.getOutFieldArgumentName())) { // getOutFieldArgumentName() == null if (oneValueRowProcessing) { WebServiceField field = meta.getFieldOutFromWsName(vReader.getLocalName(), ignoreNamespacePrefix); if (field != null) { outputRowData[outputIndex++] = getValue(vReader.getElementText(), field); putRow(data.outputRowMeta, outputRowData); oneValueRowProcessing = false; } else { if (meta.getOutFieldContainerName().equals(vReader.getLocalName())) { // meta.getOutFieldContainerName() = vReader.getLocalName() if (log.isRowLevel()) { logRowlevel("OutFieldContainerName = " + meta.getOutFieldContainerName()); } oneValueRowProcessing = true; } } } } else { // getOutFieldArgumentName() != null if (log.isRowLevel()) { logRowlevel("OutFieldArgumentName = " + meta.getOutFieldArgumentName()); } if (meta.getOutFieldArgumentName().equals(vReader.getLocalName())) { if (log.isRowLevel()) { logRowlevel("vReader.getLocalName = " + vReader.getLocalName()); } if (log.isRowLevel()) { logRowlevel("OutFieldArgumentName = "); } if (processing) { WebServiceField field = meta.getFieldOutFromWsName(vReader.getLocalName(), ignoreNamespacePrefix); if (field != null) { int index = data.outputRowMeta.indexOfValue(field.getName()); if (index >= 0) { outputRowData[index] = getValue(vReader.getElementText(), field); } } processing = false; } else { WebServiceField field = meta.getFieldOutFromWsName(vReader.getLocalName(), ignoreNamespacePrefix); if (meta.getFieldsOut().size() == 1 && field != null) { // This can be either a simple return element, or a complex type... // try { if (meta.isPassingInputData()) { for (int i = 0; i < rowMeta.getValueMetaList().size(); i++) { ValueMetaInterface valueMeta = getInputRowMeta().getValueMeta(i); outputRowData[outputIndex++] = valueMeta.cloneValueData(rowData[i]); } } outputRowData[outputIndex++] = getValue(vReader.getElementText(), field); putRow(data.outputRowMeta, outputRowData); } catch (WstxParsingException e) { throw new KettleStepException("Unable to get value for field [" + field.getName() + "]. Verify that this is not a complex data type by looking at the response XML.", e); } } else { for (WebServiceField curField : meta.getFieldsOut()) { if (!Const.isEmpty(curField.getName())) { outputRowData[outputIndex++] = getValue(vReader.getElementText(), curField); } } processing = true; } } } else { if (log.isRowLevel()) { logRowlevel("vReader.getLocalName = " + vReader.getLocalName()); } if (log.isRowLevel()) { logRowlevel("OutFieldArgumentName = " + meta.getOutFieldArgumentName()); } } } break; case XMLStreamConstants.END_ELEMENT: // END_ELEMENT= 2 if (log.isRowLevel()) { logRowlevel("END_ELEMENT"); } // If we end the xml element named as the return type, we // finish a row if ((meta.getOutFieldArgumentName() == null && meta.getOperationName().equals(vReader.getLocalName()))) { oneValueRowProcessing = false; } else if (meta.getOutFieldArgumentName() != null && meta.getOutFieldArgumentName().equals(vReader.getLocalName())) { putRow(data.outputRowMeta, outputRowData); processing = false; } break; case XMLStreamConstants.PROCESSING_INSTRUCTION: // PROCESSING_INSTRUCTION= 3 if (log.isRowLevel()) { logRowlevel("PROCESSING_INSTRUCTION"); } break; case XMLStreamConstants.CHARACTERS: // CHARACTERS= 4 if (log.isRowLevel()) { logRowlevel("CHARACTERS"); } break; case XMLStreamConstants.COMMENT: // COMMENT= 5 if (log.isRowLevel()) { logRowlevel("COMMENT"); } break; case XMLStreamConstants.SPACE: // PROCESSING_INSTRUCTION= 6 if (log.isRowLevel()) { logRowlevel("PROCESSING_INSTRUCTION"); } break; case XMLStreamConstants.START_DOCUMENT: // START_DOCUMENT= 7 if (log.isRowLevel()) { logRowlevel("START_DOCUMENT"); } if (log.isRowLevel()) { logRowlevel(vReader.getText()); } break; case XMLStreamConstants.END_DOCUMENT: // END_DOCUMENT= 8 if (log.isRowLevel()) { logRowlevel("END_DOCUMENT"); } break; case XMLStreamConstants.ENTITY_REFERENCE: // ENTITY_REFERENCE= 9 if (log.isRowLevel()) { logRowlevel("ENTITY_REFERENCE"); } break; case XMLStreamConstants.ATTRIBUTE: // ATTRIBUTE= 10 if (log.isRowLevel()) { logRowlevel("ATTRIBUTE"); } break; case XMLStreamConstants.DTD: // DTD= 11 if (log.isRowLevel()) { logRowlevel("DTD"); } break; case XMLStreamConstants.CDATA: // CDATA= 12 if (log.isRowLevel()) { logRowlevel("CDATA"); } break; case XMLStreamConstants.NAMESPACE: // NAMESPACE= 13 if (log.isRowLevel()) { logRowlevel("NAMESPACE"); } break; case XMLStreamConstants.NOTATION_DECLARATION: // NOTATION_DECLARATION= 14 if (log.isRowLevel()) { logRowlevel("NOTATION_DECLARATION"); } break; case XMLStreamConstants.ENTITY_DECLARATION: // ENTITY_DECLARATION= 15 if (log.isRowLevel()) { logRowlevel("ENTITY_DECLARATION"); } break; default: break; } } } catch (Exception e) { throw new KettleStepException( BaseMessages.getString(PKG, "WebServices.ERROR0010.OutputParsingError", response.toString()), e); } }
From source file:org.rhq.plugins.hadoop.HadoopServerConfigurationDelegate.java
private static void updateFile(File configFile, Map<String, PropertySimple> allProps) throws IOException, InterruptedException, XMLStreamException { InputStream in = null;//ww w. ja v a2 s . c om XMLStreamReader rdr = null; OutputStream out = null; XMLStreamWriter outWrt = null; try { Set<String> processedPropertyNames = new HashSet<String>(); in = new BufferedInputStream(new FileInputStream(configFile)); rdr = XML_INPUT_FACTORY.createXMLStreamReader(in); File tmpFile = File.createTempFile("hadoop-plugin", null); out = new FileOutputStream(tmpFile); outWrt = XML_OUTPUT_FACTORY.createXMLStreamWriter(out); ByteArrayOutputStream stash = new ByteArrayOutputStream(); XMLStreamWriter stashWrt = XML_OUTPUT_FACTORY.createXMLStreamWriter(stash); boolean outputActive = true; outWrt.writeStartDocument(); while (rdr.hasNext()) { int event = rdr.next(); XMLStreamWriter wrt = outputActive ? outWrt : stashWrt; switch (event) { case XMLStreamConstants.ATTRIBUTE: break; case XMLStreamConstants.CDATA: wrt.writeCData(rdr.getText()); break; case XMLStreamConstants.CHARACTERS: wrt.writeCharacters(rdr.getText()); break; case XMLStreamConstants.COMMENT: wrt.writeComment(rdr.getText()); break; case XMLStreamConstants.DTD: wrt.writeDTD(rdr.getText()); break; case XMLStreamConstants.END_DOCUMENT: wrt.writeEndDocument(); break; case XMLStreamConstants.END_ELEMENT: if (PROPERTY_TAG_NAME.equals(rdr.getName().getLocalPart())) { String encoding = rdr.getEncoding(); if (encoding == null) { encoding = "UTF-8"; } String propertyTagSoFar = Charset.forName(encoding) .decode(ByteBuffer.wrap(stash.toByteArray())).toString(); DetectedPropertyNameAndUpdatedTag propAndTag = updateProperty(propertyTagSoFar, allProps); //yes, we're intentionally circumventing the xml stream writer, because we already have the XML data we want to write. outWrt.flush(); out.write(propAndTag.updatedTag.getBytes("UTF-8")); processedPropertyNames.add(propAndTag.propertyName); //reset stuff stash.reset(); wrt = outWrt; outputActive = true; } else if (CONFIGURATION_TAG_NAME.equals(rdr.getName().getLocalPart())) { //now add the new props for (String prop : processedPropertyNames) { allProps.remove(prop); } for (Map.Entry<String, PropertySimple> e : allProps.entrySet()) { outWrt.writeStartElement(PROPERTY_TAG_NAME); outWrt.writeStartElement(NAME_TAG_NAME); outWrt.writeCharacters(e.getKey()); outWrt.writeEndElement(); outWrt.writeStartElement(VALUE_TAG_NAME); outWrt.writeCharacters(e.getValue().getStringValue()); outWrt.writeEndElement(); outWrt.writeEndElement(); } } wrt.writeEndElement(); break; case XMLStreamConstants.ENTITY_DECLARATION: //XXX could not find what to do with this break; case XMLStreamConstants.ENTITY_REFERENCE: wrt.writeEntityRef(rdr.getText()); break; case XMLStreamConstants.NAMESPACE: for (int i = 0; i < rdr.getNamespaceCount(); ++i) { wrt.writeNamespace(rdr.getNamespacePrefix(i), rdr.getNamespaceURI(i)); } break; case XMLStreamConstants.NOTATION_DECLARATION: //XXX could not find what to do with this break; case XMLStreamConstants.PROCESSING_INSTRUCTION: wrt.writeProcessingInstruction(rdr.getPITarget(), rdr.getPIData()); break; case XMLStreamConstants.SPACE: wrt.writeCharacters(rdr.getText()); break; case XMLStreamConstants.START_DOCUMENT: //this seems to be never called for some strange reason //wrt.writeStartDocument(); break; case XMLStreamConstants.START_ELEMENT: wrt.writeStartElement(rdr.getName().getPrefix(), rdr.getName().getLocalPart(), rdr.getName().getNamespaceURI()); for (int i = 0; i < rdr.getAttributeCount(); ++i) { wrt.writeAttribute(rdr.getAttributePrefix(i), rdr.getAttributeNamespace(i), rdr.getAttributeLocalName(i), rdr.getAttributeValue(i)); } if (PROPERTY_TAG_NAME.equals(rdr.getName().getLocalPart())) { wrt.writeCharacters(""); outputActive = false; } break; } } outWrt.flush(); out.flush(); out.close(); in.close(); //now copy the temp file in the place of the original one FileUtil.copyFile(tmpFile, configFile); } finally { rdr.close(); outWrt.flush(); outWrt.close(); try { in.close(); } finally { out.flush(); out.close(); } } }