Hallo, habe eine kleine Anwendung in der ich FileInput/OutputStreams nutze. Nun möchte ich aber anstatt der Files mit Strings arbeiten. Der zu verarbeitende Text soll somit in einem String stehen und nicht in einer Datei. Genauso andersrum soll es in den String zurückgeschrieben werden.
Leider weiß ich nun nicht, wie ich aus den Streams einfach einen String mache.
Ciao Alex
Code:
import org.apache.xerces.jaxp.DocumentBuilderFactoryImpl;
import org.apache.xml.serialize.XMLSerializer;
import org.apache.xml.serialize.OutputFormat;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class XmlFormatterExample {
public static void serialize(Document doc, OutputStream out) throws Exception {
OutputFormat format = new OutputFormat(doc);
format.setLineWidth(40); // Umbruch bei 40 Zeichen
//format.setIndenting(true); Achtung: darf NICHT gesetzt sein, sonst KEIN Zeilenumbruch
format.setIndent(4);
XMLSerializer serializer = new XMLSerializer(out, format);
serializer.serialize(doc);
}
public static void main(String argv[]) {
FileInputStream fis = null;
try {
String filenameInput = "c:\\temp\\xml\\1.xml"; // das ist Eure Beispieldatei
String filenameOutput = "c:\\temp\\xml\\1_output.xml";
fis = new FileInputStream(filenameInput);
DocumentBuilderFactoryImpl factory = new DocumentBuilderFactoryImpl();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource( fis ));
FileOutputStream fos = new FileOutputStream(filenameOutput);
serialize(doc, fos);
} catch(Exception e) {
System.out.println("Error!" + e);
} finally {
if(fis != null) try { fis.close(); } catch(Exception e) { /* ignore */ }
}
}
}
Leider weiß ich nun nicht, wie ich aus den Streams einfach einen String mache.
Ciao Alex