2011-05-31 76 views
2

我想嵌入給定文件夾的所有xml文件。現在我在做這樣的事情:是否可以嵌入文件夾中的所有文件?

[Embed(source="../somefolder/file1.xml", mimeType="application/octet-stream")] 
private var MyClass1:Class; 

[Embed(source="../somefolder/file2.xml", mimeType="application/octet-stream")] 
private var MyClass2:Class; 

[Embed(source="../somefolder/file3.xml", mimeType="application/octet-stream")] 
private var MyClass3:Class; 

var file:XML; 
var bytes:ByteArray; 

switch (fileId) { 
    case 1: 
     bytes = new MyClass1(); 
     break; 
    case 2: 
     bytes = new MyClass2(); 
     break; 
    case 3: 
     bytes = new MyClass3(); 
     break; 
} 

file = new XML(bytes.readUTFBytes(bytes.length)); 

的XML文件的列表將增長到10以上的文件,所以我在尋找一個更優雅的和動態的方式來嵌入這些文件。

這些文件應該嵌入到編譯中,通過URLLoader加載它們不是一個選項。

任何想法?

+0

爲什麼他們必須嵌入;而不是在運行時加載?爲什麼你需要這麼多不同的文件? – JeffryHouser 2011-05-31 12:43:09

+0

爲什麼?我只是想知道是否有可能。 :) – roberkules 2011-05-31 12:47:48

+1

@roberkules對我來說,這聽起來像是一個問題/體系結構/方法。但是,對於任何開發決策,總是有權衡的,所以不知道爲什麼,我不能肯定地說。 – JeffryHouser 2011-05-31 12:53:25

回答

6

我不認爲有一種方法可以這樣做:

[Embed(source="../somefolder/*", mimeType="application/octet-stream")] 

但是你可以使用一個ZIP文件並訪問其內容。我經常用http://nochump.com/blog/archives/15做到這一點kaind的事情:

package 
{ 
    import flash.display.Sprite; 
    import flash.utils.ByteArray; 

    import nochump.util.zip.ZipEntry; 
    import nochump.util.zip.ZipFile; 


    public class TestTextfield extends Sprite 
    { 
     [Embed(source="files.zip", mimeType="application/octet-stream")] 
     private var zipContent:Class; 

     public function TestTextfield() 
     { 
      var zip : ZipFile = new ZipFile(new zipContent); 

      for each(var entry : ZipEntry in zip.entries) 
      { 
       var entryContent : ByteArray = zip.getInput(entry); 

       if(entry.name.indexOf(".xml") != -1) 
       { 
        var xmlContent : XML = new XML(entryContent.readUTFBytes(entryContent.bytesAvailable)); 
        trace("File " + entry.name +" :\n" + xmlContent); 
       } 
      } 
     } 

    } 
} 

本例將顯示包含在嵌入式files.zip

+0

正確的思想我已經從提高例如deng.fzip到nochump.utils.zip 您可以訪問我的網站http://sourceskyboxer.byethost16.com/dengfziptonochumputilszip它嵌入壓縮載荷圖標 – SourceSkyBoxer 2016-01-27 20:38:27

4

所有的XML文件內容我只能建議你寫某種代碼生成的腳本。可以有以下選擇:

  • Flex編譯器擴展(更多詳情herehere)。這樣你可以預處理你的代碼並嵌入元數據。解決方案可以是註釋(元標籤)驅動。
  • Ant腳本。
  • 您自己的命令行腳本。
+0

我使用Ant構建項目。如何使用ANT的可能解決方案? – roberkules 2011-05-31 12:53:12

+0

我不喜歡Ant,但我可以建議你使用Ant Contrib的['Foreach'任務](http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html)來迭代XML文件你的目錄並獲取他們的名字。然後,我建議您使用['ReplaceRegExp'任務](http://ant.apache.org/manual/Tasks/replaceregexp.html)將您的特殊元標註代碼替換爲生成的行。 – Constantiner 2011-05-31 13:04:54

+0

看到這個答案並對它進行一些思考之後;我回來補充了它。我認爲ANT腳本方法是一個非常有創意的解決方案。 – JeffryHouser 2011-05-31 23:25:47

相關問題