<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/ -->
<mx:Application name="DataGrid_dataProvider_XML_test2"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white" viewSourceURL="srcview/index.html">

    <mx:Script>
        <![CDATA[
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.utils.ObjectUtil;

            private function labelFunc(item:XML, col:DataGridColumn):String {
                return item.name();
            }

            private function nameSortCompareFunc(itemA:XML, itemB:XML):int {
                return ObjectUtil.stringCompare(dataGridCol1.itemToLabel(itemA), dataGridCol1.itemToLabel(itemB), true);
            }

            private function typeSortCompareFunc(itemA:XML, itemB:XML):int {
                return ObjectUtil.numericCompare(itemA.@type, itemB.@type);
            }
        ]]>
    </mx:Script>

    <mx:XML id="xmlDP" source="data/log.xml" />

    <mx:DataGrid id="dataGrid"
            dataProvider="{xmlDP.children()}"
            verticalScrollPolicy="on">
        <mx:columns>
            <mx:DataGridColumn id="dataGridCol1"
                    headerText="Name"
                    labelFunction="labelFunc"
                    sortCompareFunction="nameSortCompareFunc" 
                    width="80"/>
            <mx:DataGridColumn id="dataGridCol2"
                    dataField="@type"
                    headerText="Type"
                    sortCompareFunction="typeSortCompareFunc"
                    width="50" />
            <mx:DataGridColumn id="dataGridCol3"
                    dataField="@message"
                    headerText="Message"
                    width="200" />
        </mx:columns>
    </mx:DataGrid>

</mx:Application>