2011-02-04 68 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,也改变阵列,以反映在您的名单变化或其它物体更容易控制,如果发[绑定]它会反映数组对其所连接的对象的更改。