2011-11-21 85 views
0

我正在通過Java代碼使用XSL來轉換XML文件。我使用this相同的教程。現在問題是輸出文件被創建,但它沒有內容。我也在添加代碼片段。請檢查,並告訴我,我失去了什麼:來自Java代碼的XML轉換

TransformerFactory factory = TransformerFactory.newInstance(); 
    System.out.println("In transform"); 
    File temp = new File(xslFile); 
    if(temp.exists()){ 
     System.out.println("File found"); 
    } 
    StreamSource xsl = new StreamSource(temp); 
    Transformer transformer = factory.newTransformer(xsl); 


    temp = new File(xmlFile); 
    if(temp.exists()){ 
     System.out.println("Found Again!!"); 
    } 
    StreamSource xml = new StreamSource(temp); 

    temp = new File(outputFile); 
    if(temp.createNewFile()){ 
     System.out.println("New File Created"); 
    } 
    StreamResult output = new StreamResult(temp); 

    transformer.transform(xml, output); 

這裏,xslFile,XMLFILE和OUTPUTFILE是字符串,並作爲參數傳遞給方法。

+0

這裏的outputFile是一個HTML文件。 – whitehat

+0

你的Java代碼看起來沒問題。問題可能在於樣式表本身。你能提供輸入XML和XSLT嗎? –

+0

其實問題是在轉換步驟花了很長時間。即在執行以下代碼時: - transformer.transform(xml,output)。但是,代碼正常工作並創建具有所需內容的文件。但即使在XML解析時,我也遇到了類似的問題,因此需要花費很長時間來處理。我的系統並不慢,但是這個時間滯後可能會有一些具體的原因嗎? – whitehat

回答

0

嘗試聲明三個不同的變量,每個文件一個。代碼看起來更清晰,你很可能會避免一些意外的行爲,因爲你不知道如何使用這三個引用Transformer

+0

沒關係。代碼可能更乾淨,但它永遠不會對執行產生影響,因爲在每次使用它構建Source或Result之前,他都將一個新的File實例分配給'temp'。 –

+1

@G_H,你說的對,我衝了 – jglatre