2011-12-13 65 views

回答

5

這樣做的一種方法是使用標準Java轉換並使用標準javax.xml.transformAPI執行轉換。

爲此添加Java變換你的流量

enter image description here

Import Packages窗格中,導入所需的Java包

enter image description here

import java.io.*; 
import javax.xml.transform.*; 
import javax.xml.transform.stream.*; 

Helper Code窗格我們構建一個變壓器對象。據我所知,非靜態字段是每個實例創建的,所以應該沒有併發問題。 (評論

enter image description here

private final Transformer transformer = getNewTransformer(); 

public Transformer getNewTransformer() 
{ 
    // /opt/informatica/infadev/DataTransformation 
    final String IFCMPath = System.getenv("IFCONTENTMASTER_HOME"); 
    final String xslt = IFCMPath + "/ServiceDB/xst/mytransform.xslt"; 
    logInfo("Using XSLT File" + xslt); 
    try{ 
    return TransformerFactory.newInstance().newTransformer(new StreamSource(xslt)); 
    } catch(TransformerConfigurationException ex) { 
    logError("Could not create TransformerFactory with xslt " + xslt); 

    } 
    return null; 
} 

最後,我們執行由變壓器對象上執行的變換方法對傳入的XML文檔變換。

enter image description here

if(transformer == null) { 
    failSession("Transformer was null"); 
} 

//final long startTime = System.nanoTime(); 
//final long endTime; 

try { 
    //logInfo("Recieved xml with size " + xmlin.length()); 
    // logInfo("Recieved xml " + xmlin); 
    final StringReader reader = new StringReader(xmlin); 
    final StringWriter writer = new StringWriter(); 

    transformer.transform(new StreamSource(reader),new StreamResult(writer)); 
    xmlout = writer.toString(); 
    // logInfo("xmlout " + xmlout ); 
} catch (Exception e) { 
    incrementErrorCount(1); 
    logError(e.getMessage()); 
    logError(xmlin); 
} 

//finally { 
// endTime = System.nanoTime(); 
//} 

//final long duration = endTime - startTime; 
//logInfo("Duration " + duration/1000000000.0);