2010-12-07 68 views
2

我試圖通過XSLT將XML文件轉換爲Android佈局XML。到目前爲止,我得到了這個工作,它返回有效的XML。我想通過的setContentView來顯示該輸出(或如果這是不可能的,我想查看添加到ViewFlipper。到目前爲止,我還沒有succesfull,我也無法找到關於此主題的任何信息。我可以通過setContentView從變量中顯示XML嗎?

這是我的代碼:?

Source xmlSource = new StreamSource(projectFile); //a XML file on the SD card 
Source xsltSource = new StreamSource(getResources().openRawResource(R.raw.session)); 
TransformerFactory transFact = TransformerFactory.newInstance(); 
Transformer trans = transFact.newTransformer(xsltSource); 

OutputStream output = new StringOutputStream(); 
StreamResult result = new StreamResult(output); 
trans.transform(xmlSource, result); 

output.toString()返回轉換後的XML以字符串格式,到目前爲止一切正常,但我怎麼能在我的佈局中使用這個XML 我已經試過以下方法:

setContentView(output); 

和:

projectFlipper = (ViewFlipper)findViewById(R.id.projectFlipper); 
projectFlipper.addView(output); 

我已經嘗試過施放這個變量,但是我已經停留了很長一段時間了。我忽略了什麼?或者有沒有辦法做到這一點?

在此先感謝!

回答

1

事實上,視圖是通過使用LayoutInflater的XML文件創建的。然而,在這個類的javadoc中說:

重要:由於性能原因,查看通貨膨脹嚴重 依靠的是 在構建時進行XML文件預處理。因此, 目前不可能在運行時一個純XML文件來使用 LayoutInflater與XmlPullParser 。

因此,如您所見,動態使用XML文件創建新視圖是不可能的。但是,您應該能夠翻譯您的「轉換」邏輯,以便以編程方式創建您的屏幕。

1

這是不可能的。所有的資源都被編譯並添加到項目apk中。你可以做的是手動解析XML並在運行中創建視圖。

+0

好,謝謝!你有這方面的經驗嗎?我必須解析一個大文檔500多行,最好的方法是什麼? DOM,SAX或pullparser? – PtjZ 2010-12-07 14:05:31

+0

由於其性能,SAX始終是首選。但在這種情況下,因爲您將需要知道視圖嵌套正確的DOM會更好,我猜。 – Varun 2010-12-07 14:08:41

相關問題