2016-05-18 8 views
2

In meinem Code unten, ich bin die XML-Datei mit XSLT Modifizieren SAXON mitSaxon Implementierung für Strom von Daten

import java.io.File; 

import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.stream.StreamResult; 
import javax.xml.transform.stream.StreamSource; 

public class SaxonImplementation { 

    public static void simpleTransform(String sourcePath, String xsltPath, 
     String resultDir) { 
    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    try { 
     Transformer transformer = tFactory 
      .newTransformer(new StreamSource(new File(xsltPath))); 
     transformer.transform(new StreamSource(new File(sourcePath)), 
      new StreamResult(new File(resultDir))); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

    public static void main(String[] args) { 
    System.setProperty("javax.xml.transform.TransformerFactory", 
     "net.sf.saxon.TransformerFactoryImpl"); 
    simpleTransform("first.xml", "newxsl.xslt", "second.xml"); 
    } 
} 

Anstatt nun die XML-Datei zu modifizieren, möchte ich eine XML-Zeichenfolge ändern. Wie soll ich hier vorgehen? Die transformer.transform-Methode benötigt eine XML-Quelldatei und die Ergebnisdatei. Wie kann ich eine XML-Zeichenfolge anstelle einer Datei angeben und die Ergebnisse in Form von Stream abrufen?

Antwort

3

Sie können eine StreamSource für eine java.io.Reader schaffen somit die XML-String in einem StringReader wickeln und dann in einem StreamSource und passieren, dass an den Transformator:

String xml = ... 
transformer.transform(new StreamSource(new StringReader(xml)), ... 

Gleiche gilt für die StreamResult können Sie alle nutzen OutputStream oder Writer, um eine StreamResult zu erstellen.

Und das funktioniert für jede Trax Implementierung nicht nur für Saxon.

+0

Vielen Dank für Ihre Antwort :). Ich werde versuchen zu tun, was Sie erwähnt haben. –