- the standard XML header
<?xml version="1.0" encoding="UTF-8"?>
causes an error. it can be omitted by setting the OMIT_XML_DECLARATION output property to "yes" - the parsing fails for big XML files when there are no line feeds, probably due to a maximum line length somewhere. this problem disappears when setting the INDENT output property to "yes"
here's some pseudo-code:
import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import org.w3c.dom.*; import org.xml.sax.*; final DocumentBuilderFactory builderFactory; final DocumentBuilder builder; final TransformerFactory transformerFactory; final Transformer transformer; final org.w3c.dom.Document domDoc; final DOMSource domSrc; final StreamResult streamResult; final Element childNode; builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setValidating( true ); transformerFactory = TransformerFactory.newInstance(); builder = builderFactory.newDocumentBuilder(); transformer = transformerFactory.newTransformer(); // builder.setEntityResolver( myResolver ); domDoc = builder.newDocument(); childNode = domDoc.createElement( myRootElementName ); domDoc.appendChild( childNode ); myDocument.createSomeXMLCode( domDoc, childNode ); domSrc = new DOMSource( domDoc ); streamResult = new StreamResult( myOutputFile ); // note: DTD will be ignored by SuperCollider XML classes, so // we could use one if we want: // transformer.setOutputProperty( OutputKeys.DOCTYPE_SYSTEM, myDTD ); transformer.setOutputProperty( OutputKeys.INDENT, "yes" ); transformer.setOutputProperty( OutputKeys.OMIT_XML_DECLARATION, "yes" ); transformer.transform( domSrc, streamResult );
last mod: 24-nov-06 sciss