|
|
Want to know more about Packt's Article Network? Interested in contributing your article ideas? Please visit our FAQ for more information. See More BROWSE
All Titles WordPress Web Services SOA BPEL Web Graphics & Video Web Development RAW Portugues, Espanol, Italiano, French PHP/MySQL Oracle Open Source Networking & Telephony Moodle Microsoft & .NET Linux Servers jQuery Joomla! JBoss Java e-Learning e-Commerce Dynamics Drupal CRM Cookbook Content Management Beginner Guides Architecture and Analysis AJAX Future Titles Recently Published Titles In this two-part article series by Satish Kore, you will learn how to work with XML data using Flex's E4X approach. In the first part of this article series i.e. this article, we will start with the basics and move ahead to understand E4X completely. In the second part of this article series, we will learn about loading external XML documents, and also look at an example illustrating the explained concepts. See More |
Working with XML in Flex 3 and Java-part2
Loading external XML documentsYou can use the URLLoader class to load external data from a URL. The URLLoader class downloads data from a URL as text or binary data. In this section, we will see how to use the URLLoader class for loading external XML data into your application. You can create a URLLoader class instance and call the load() method by passing URLRequest as a parameter and register for its complete event to handle loaded data. The following code snippet shows how exactly this works: private var xmlUrl:String = "http://www.foo.com/rssdata.xml"; Let's see one quick complete sample of loading RSS data from the Internet: <?xml version="1.0" encoding="utf-8"?> In the code above, we are loading RSS feed from an external URL and displaying it in DataGrid by using data binding. Output: An example: Building a book explorerIn this section, we will build something more complicated and interesting by using many features, including custom components, events, data binding, E4X, loading external XML data, and so on. We will build a sample books explorer, which will load a books catalog from an external XML file and allow the users to explore and view details of books. We will also build a simple shopping cart component, which will list books that a user would add to cart by clicking on the Add to cart button. Create a new Flex project using Flex Builder. Once the project is created, create an assetsimages folder under its src folder. This folder will be used to store images used in this application. Now start creating the following source files into its source folder. Let's start by creating a simple book catalog XML file as follows: bookscatalog.xml: The above XML file contains details of individual books in an XML form. You can also deploy this file on your web server and specify its URL into URLRequest while loading it. Next, we will create a custom event which we will be dispatching from our custom component. Make sure you create an events package under your src folder in Flex Builder called events, and place this file in it. AddToCartEvent.as: This is a simple custom event created by inheriting the flash.events.Event class. This class defines the ADD_TO_CART string constant, which will be used as the name of the event in the addEventListener() method. You will see this in the BooksExplorer.mxml code. We have also defined an object to hold the reference of the book which the user can add into the shopping cart. In short, this object will hold the XML node of a selected book. Next, we will create the MXML custom component called BookDetailItemRenderer.mxml. Make sure that you create a package under your src folder in Flex Builder called components, and place this file in it and copy the following code in it: <?xml version="1.0" encoding="utf-8"?> The above custom component will be used as an itemRenderer to display books' details from an XML file. In this example, we have created a custom MXML-based component. This custom component dispatches a custom event called AddToCartEvent when a user clicks on the add to cart button. Notice that when we are dispatching an event, we are setting its bubbles argument (second argument in the AddToCartEvent constructor, which is inherited from the flash.events.Event class) to true. This is very important in order to bubble this event up to its parent where we will write an event listener for it. You will see how to write an event listener on the parent to handle the event dispatched by its children in the BooksExplorer.mxml code. At the end, this custom component will be used as ItemRenderer of the TileList component to display books. So we are using the data property of the itemRenderer instance to access XML nodes and properties using the E4X technique. The data property is implicitly available in item renderers that can be used to access content locally. Next, we will create the main application and layout the book explorer user interface, and then we will write business logic for loading XML data and display it in the custom component, and so on. BooksExplorer.mxml: In the code above, we have used the HBox, VBox, and Panel containers to lay out the main user interface. We have also added a TileList component to display books using a custom component, that is, BookDetailItemRenderer.mxml as its itemRenderer. Next, we have added another Panel container to display the selected book's details using a Form container. We have used data binding to bind the selected book's details with individual labels in the Form container, for example, text="{selectedBook.title}". selectedBook is an XML object which will be populated with the selected book's details when you select an item in the TileList component using its change event. The TileList control displays a number of items laid out in tiles. It displays a scroll bar to access all items in the list. You can use its direction property to control the direction in which this control lays out its children. To know more about the TileList control, see Flex 3 language reference at http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html. Next, we have created another Panel container to create the shopping cart user interface and added a DataGrid component to display cart details. The DataGrid component is using data binding to display information from the shoppingCart ArrayCollection object, which will contain individual selected book nodes. We will populate the shopppingCart array in the addToCartHandler() method, which is the event handler for the addToCart custom event. In the ActionScript code block, we have defined a method called init() to initialize the application's resources and variables. This method is called in the application tag's creationComplete event. In this method, we have registered an event handler for the addToCart event which will be dispatched by the BookDetailItemRenderer.mxml custom component. Notice that BookDetailItemRenderer.mxml is acting as an itemRenderer of a TileList component, so there is no straight way to add an event listener to it. Therefore, to handle events from the itemRenderer component in its parent, you need to dispatch an event from custom component by setting its bubble argument to true. When an event is dispatched with the bubble argument set to true, Flex searches for event listeners in the bottom to top order—that is, from event target to root display object. When it finds an appropriate event listener anywhere in its display hierarchy, it delivers an event to it. This is a simple way to communicate with your application from itemRenderers. Next, we are loading XML file using URLLoader and setting its result to the xmlData XML object, which is used as the dataProvider of the TileList component. xmlData.book refers to individual Now we are ready with our application. Once we compile and execute this application, you would see the following screen: You can play with this application. You can try selecting different items from the TileList control and see how it changes display in the Details panel, and see what happens when you click on the Add to cart button. SummaryIn this article, we learned how to load external XML files and use XML as a data provider. We also created a sample books explorer application using various concepts, such as custom component, event creation, data binding, and E4X. This article series mainly covered the E4X approach to process XML data with a comprehensive example application using these techniques to process XML data. If you have read this article you may be interested to view : Flex 3 with Java
About the AuthorSatish Kore hails from Bangalore, the IT capital of India. He has more than 8 years experience in the technology world, spread across multiple technologies and domains, and he has extensive knowledge of Java, J2ME and Adobe Flex, ActionScript, and so on. He is a Principle Engineer at multinational company in Bangalore, India. He is a Flex enthusiast and evangelist and has been working on Flex since its early 1.5 version days. His application built using Flex 3 has won a best-application award from Flash-based telephony company Ribbit (http://www.ribbit.com). You can visit his blog for more information at http://blog.satishkore.com. Books from Packt
|
|
| ||||||||