используя переменную в разборе XML, и это не работает - PullRequest
0 голосов
/ 04 февраля 2011

Может кто-нибудь, пожалуйста, помогите мне. Моя проблема в том, что я использую переменную для идентификации раздела элементов многих галерей, которые есть у меня под тегом «galleryType», и ничего не отображается для отображения. Правильно ли я ищу мой galleryType в моем коде или мне нужно перебрать мой 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

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

попробуй imgList = new XMLList(new XML(xmlData.galleryType.(@Name == galleryName).images.* as String));

0 голосов
/ 04 февраля 2011

Я бы пошел за цикл, чтобы у вас было больше контроля над значениями, которые передаются в цикле.

пример:

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);
     }
}

тогда вы можете привязать массив к вашему спискуили DataGrid, также изменяя массив, чтобы отразить изменения в вашем списке или другом объекте, легче управлять, если сделать [Bindable], он отразит изменения в массиве объекта, к которому он подключен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...