как отобразить список продуктов из XML-файла в Adobe flex

#xml #flex4 #adobe

#xml #flex4 #adobe

Вопрос:

У меня есть HTML-файл со следующим кодом в виде списка продуктов

 <productstore>
    <product id='A1'>
    <image lbl="Apple" src="assets/apple.png" />
    <price>$11.00</price>
    <description>Keeps doctor away</description>
    <code>ap01</code>
    </product>
</productstore>
  

Я хочу отобразить изображение с названием и ценой на холсте (Flex с flash Builder 4.5). Я последовал примеру, приведенному в ссылке
http://blog.flexexamples.com/2008/03/08/creating-a-simple-image-gallery-with-the-flex-tilelist-control/

 <mx:XML id="xml" source="prod.xml" />
    <mx:XMLListCollection id="xmlListColl" source="{xml.image}" />
    <mx:TileList id="tileList" x="492" y="10" width="255" height="316" columnCount="2"
                 columnWidth="125" dataProvider="{xmlListColl}"
                 itemRenderer="TileListItemRenderer" rowCount="4" rowHeight="100"
                 verticalScrollPolicy="on"/>
  

Также рассматриваемая мной модификация заключается в добавлении dragAccept, а не события щелчка, в отличие от примера.

Это мой TileListItemRenderer

 <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
             x="492" y="10" width="255" height="316" 
         horizontalAlign="center"
         verticalAlign="middle">

    <mx:Image source="{data.@src}" />

    <mx:Label text="{data.@lbl}" />

</mx:VBox>
  

Когда я создаю и запускаю список, он пуст, не уверен, чего мне не хватает. Будем признательны за любую помощь.

Теперь я изменил код, пытаясь реализовать следующую ссылку, и снова застрял:http://blog.flexexamples.com/2008/03/29/dynamically-loading-xml-files-using-the-httpservice-tag /

main.mxml

     private function init():void
                {
                    var srcUrl:String = FlexGlobals.topLevelApplication.application.parameters.srcUrl;
                    if(srcUrl) {
                        ViewSource.addMenuItem(this, srcUrl);
                    }
                    loadProducts('prod.xml');
                }

                private function loadProducts(src:String):void {
                    httpService.url = src;
                    httpService.send();
                }
private function httpService_result(evt:ResultEvent):void {
                var xmlList:XMLList = XML(evt.result).product.image;
                xmlListColl = new XMLListCollection(xmlList);
            }
  

Itemrenderer

 <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
         x="492" y="10" width="255" height="316" >

    <mx:Image source="{data.image}" />

    <mx:Label text="{data.name}" />

</mx:Canvas>
  

xml

 <productlist>
        <product>
        <name>Apple</name>
        <image>assets/apple.png</image>
        <price>$11.00</price>
        <description>Keeps doctor away</description>
        <code>ap01</code>
        </product>
    </productstore>
  

По-прежнему безуспешно….

Ответ №1:

Переменная {data} связана с узлом xml. Итак, если вы хотите ссылаться на значение «src», правильное выражение привязки должно быть:

 {data.image.@src}
  

Попробуйте это и сообщите нам о результатах.