2009-10-06 45 views
0

即使問題主題看起來很複雜,問題也很簡單。如何使用Groovy構建器以UTF-8格式轉換XML文件StreamingMarkupBuilder

我創建具有以下腳本的XML文件:

def xmlFile = new File("file-${System.currentTimeMillis()}.xml") 
mb = new groovy.xml.StreamingMarkupBuilder() 
mb.encoding = "UTF-8" 
new FileWriter(xmlFile) << mb.bind { 
    mkp.xmlDeclaration() 
    out << "\n" 
    someMarkup {} 
} 

後來,當我使用類似的代碼分析這個文件:

def xml = new XmlSlurper().parse(xmlFile) 

我得到了以下MalformedByteSequenceException例外:

拋出的異常:無效的字節2 3字節的UTF-8序列

如果我將文件轉換爲UTF-8格式(例如使用Notepad ++),那麼一切正常。

那麼,我能做些什麼來保存UTF-8格式的文件呢?爲什麼代碼mb.encoding = "UTF-8"不這樣做?

THX

+0

您可以參考此博客。 http://mrhaki.blogspot.com/2009/10/groovy-goodness-creating-xml-with.html它應該幫助 – 2009-10-07 04:20:33

回答

2

您需要環繞一個FileOutputStream輸出流的作家是utf-8並不是默認字符集

new OutputStreamWriter(new FileOutputStream(exportXmlFile),'utf-8') << mb.bind { 
    mkp.xmlDeclaration() 
    out << "\n" 
    someMarkup {} 
} 

我不知道mb.encoding做什麼設置,可能只是在xml標題中設置字符集

+0

Thx。它運作良好。 – fabien7474 2009-10-07 13:04:03

相關問題