2011-06-09 110 views
3

我正在使用XSL將我的XML文件配置爲較小的XML。我的代碼片段是這樣:文件過早結束錯誤

public class MessageTransformer { 

public static void main(String[] args) { 
    try { 
     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 

     Transformer transformer = transformerFactory.newTransformer (new StreamSource("sample.xsl")); 
     transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 
     transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
     transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
     transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 
     transformer.transform(new StreamSource ("sample.xml"), 
      new StreamResult(new FileOutputStream("sample.xml")) 
     ); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    }  
} 
} 

當我使用XSL文件來轉換XML手動我不有任何問題,我得到這個錯誤

ERROR: 'Premature end of file.' 
ERROR: 'com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Premature end of file.' 

。但是,這個JAVA文件無法轉換。

會出現什麼問題?

+0

我覺得讓StreamSource(你原來的xml)和StreamResult(xslt後的結果)指向同一個文件,可能會讓你陷入困境。 – Wivani 2011-06-09 10:53:58

回答

6

您正從同一個文件進行流式傳輸。嘗試將其更改爲這樣的事情:

transformer.transform(new StreamSource ("sample.xml"), 
     new StreamResult(new FileOutputStream("sample_result.xml")) 
    ); 
+0

我剛剛通過使用不同的方法解決。但你的報價也是如此。可能會對其他人有用。謝謝;) – gencay 2011-06-09 10:55:43

+9

@gencay - 你能告訴我們你是如何解決它的? – Ben 2012-03-25 01:04:08

0

完成XML文件給任何標籤其他明智的,它會給一個錯誤:文件過早結束。

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> 
<Customer> 
<person> 
    <Customer_ID>1</Customer_ID> 
    <name>Nirav Modi</name> 
</person> 
<person> 
    <Customer_ID>2</Customer_ID> 
    <name>Nihar dave</name> 
</person> 
</Customer> 

像這樣,然後再試一次。

相關問題