Hi,
vorab mein Nick verrät bestimmt schon, dass meine JAVA-Kenntnisse sehr gering sind. Aber dank des Forums habe ich schon einiges zum Laufen bekommen.
Ich möchte gern mit Java einige XML-Dateien mit XSL2-Dateien transformieren. Mit JDOM gingen die alten XSL 1.0 Dateien, aber der meckert bei XSL 2.0.
Nun habe ich alles mit den Klassen umgeändert. Benutz jez org.xml.sax.*,
javax.xml.transform.sax.*.
Beim Testen der Anwendung bekomme ich die Fehlermeldung: "Stream closed", weil das Transformationsgergebnis soll ich eine Datei ausgegegeben werden.
Die exakte Fehlermeldung:
So nun kommt der Codeabschnitt für die Transformation:
Vielen Dank im Voraus und bitte verzeiht mir die automatisch generierten Exceptionen, wie gesagt bin noch eine blutiger Anfänger.
Gruß Java?
vorab mein Nick verrät bestimmt schon, dass meine JAVA-Kenntnisse sehr gering sind. Aber dank des Forums habe ich schon einiges zum Laufen bekommen.
Ich möchte gern mit Java einige XML-Dateien mit XSL2-Dateien transformieren. Mit JDOM gingen die alten XSL 1.0 Dateien, aber der meckert bei XSL 2.0.
Nun habe ich alles mit den Klassen umgeändert. Benutz jez org.xml.sax.*,
javax.xml.transform.sax.*.
Beim Testen der Anwendung bekomme ich die Fehlermeldung: "Stream closed", weil das Transformationsgergebnis soll ich eine Datei ausgegegeben werden.
Die exakte Fehlermeldung:
FEHLER: 'Stream closed'
javax.xml.transform.TransformerException: java.io.IOException: Stream closed
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at gui.gui.actionPerformed(gui.java:216)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.io.IOException: Stream closed
at java.io.BufferedInputStream.getInIfOpen(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
... 28 more
---------
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getInIfOpen(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at gui.gui.actionPerformed(gui.java:216)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
So nun kommt der Codeabschnitt für die Transformation:
Code:
//read the style file
File stylesheet1 = new File("transform.xsl");
File datafile = new File("all_names.xml");
// Set up the input stream
BufferedInputStream bis = new
BufferedInputStream(InputStream(datafile));
InputSource input = new InputSource(bis);
// Set up to read the input file
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = null;
try {
parser = spf.newSAXParser();
} catch (ParserConfigurationException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (SAXException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
XMLReader xmlreader = null;
try {
xmlreader = parser.getXMLReader();
} catch (SAXException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
// Create the filters
SAXTransformerFactory stf = (SAXTransformerFactory) TransformerFactory.newInstance();
XMLFilter filter1 = null;
try {
filter1 = stf.newXMLFilter(
new StreamSource(stylesheet1));
} catch (TransformerConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
filter1.setParent(xmlreader);
StreamResult result = new StreamResult(System.out);
Transformer transformer = null;
try {
transformer = stf.newTransformer();
} catch (TransformerConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
SAXSource transformSource = new SAXSource(filter1, input);
// transformer.transform(transformSource, System.out);
transformer.transform(transformSource,result);
} catch (TransformerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Vielen Dank im Voraus und bitte verzeiht mir die automatisch generierten Exceptionen, wie gesagt bin noch eine blutiger Anfänger.
Gruß Java?