2011-02-04 35 views
0

任何人都可以請幫助我。 我的問題是,我正在使用一個變量來標識我在標籤「galleryType」下的許多圖庫的元素部分,並且沒有任何內容會返回給我顯示。 我正在尋找我的圖片庫在我的代碼中正確的方式,或者我需要通過我的XML在我的galleryTypes循環。提前致謝。在xml解析中使用變量,它不起作用

這裏是我的XML代碼:

<My_gallery> 
    <galleryType Name="GalleryName001"> 
     <images> 
      <image label="example text" thumb_src="folder/thumb001.jpg">folder/image001.jpg</image> 
      <image label="example text" thumb_src="folder/thumb002.jpg">folder/image002.jpg</image> 
      <image label="example text" thumb_src="folder/thumb003.jpg">folder/image003.jpg</image> 
     </images> 
    </galleryType> 
    <galleryType Name="GalleryName002"> 
     <images> 
      <image label="example text" thumb_src="folder/thumb001.jpg">folder/image001.jpg</image> 
      <image label="example text" thumb_src="folder/thumb002.jpg">folder/image002.jpg</image> 
      <image label="example text" thumb_src="folder/thumb003.jpg">folder/image003.jpg</image> 
     </images> 
    </galleryType> 
</My_gallery> 

這裏是我的AS3代碼:

public function selectGallery(val:String):void { 
    galleryName = val; 
    navClass = new navigationClass(galleryName); 
    galleryName = navClass.getGalleryType; 
    loadXML("myGallery001.xml"); 
} 

private function loadXML(img_source:String):void { 
    xmlData = new XML(); 
    xmlData.ignoreWhitespace = true; 
    xmlLoader = new URLLoader(); 
    xmlLoader.load(new URLRequest(img_source)); 
    xmlLoader.addEventListener(Event.COMPLETE, XMLloaded); 
} 

private function XMLloaded(evt:Event):void { 
    xmlData = new XML(evt.target.data);  

    // I am getting a result back with my trace but nothing is going into my imgList 
    imgList = xmlData.galleryType.(@Name==galleryName).images.*; 
    trace(xmlData.galleryType.(@Name == galleryName).images.*); 
}images 
+0

確定的價值包含到galleryName,到evt.target.data? – Patrick 2011-02-04 18:57:19

+0

evt.target.data僅包含我的XML。 galleryName是一個公共變量,這是你的意思? – dinogy 2011-02-04 19:52:10

回答

1

嘗試imgList = new XMLList(new XML(xmlData.galleryType.(@Name == galleryName).images.* as String));

0

我會去的循環,這樣,你有過一個通過了循環的價值更多的控制權。

例如:

var thumbArray = new Array(); 

function processXML(evt:Event):void 
{ 
    galleryXML = new XML(evt.target.data); 
    for each (var i:XML in galleryXML.files.file) 
    { 
      thumbArray.push(i.thumbnail); 
    } 
} 

,那麼你可以將綁定在陣列您List或DataGrid,也改變陣列,以反映在您的名單變化或其它物體更容易控制,如果發[綁定]它會反映數組對其所連接的對象的更改。