Java Flex/Flash 4数据网格显示原始xml

Java Flex/Flash 4数据网格显示原始xml,java,flash,soap,flex4,Java,Flash,Soap,Flex4,问题:Flex/Flash4客户端(使用FlashBuilder4构建)完全按照原样显示从服务器发送的xml—datagrid保留xml的格式。我需要datagrid解析输入并将数据放在datagrid的正确行和列中 流:单击树中的日期,它会向服务器请求xml格式的批处理信息。然后使用CallResponder更新datagrid的dataProvider [守则] <fx:Script> <![CDATA[ import mx.controls.Ale

问题:Flex/Flash4客户端(使用FlashBuilder4构建)完全按照原样显示从服务器发送的xml—datagrid保留xml的格式。我需要datagrid解析输入并将数据放在datagrid的正确行和列中

流:单击树中的日期,它会向服务器请求xml格式的批处理信息。然后使用CallResponder更新datagrid的dataProvider

[守则]

<fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        [Bindable]public var selectedTreeNode:XML;
        public function taskTreeChanged(event:Event):void {
            selectedTreeNode=Tree(event.target).selectedItem as XML;
            var searchHubId:String = selectedTreeNode.@hub;
            var searchDate:String = selectedTreeNode.@lbl;
            if((searchHubId == "") || (searchDate == "")){
                return;
            }
        findShipmentBatches(searchDate,searchHubId);
        }
        protected function findShipmentBatches(searchDate:String, searchHubId:String):void{
            findShipmentBatchesResult.token = actWs.findShipmentBatches(searchDate, searchHubId);
        }
        protected function updateBatchDataGridDP():void{
        task_list_dg.dataProvider = findShipmentBatchesResult.lastResult;
    }
]]>
</fx:Script>
<fx:Declarations>
    <actws:ActWs id="actWs" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
    <s:CallResponder id="findShipmentBatchesResult" result="updateBatchDataGridDP()"/>
</fx:Declarations> 

<mx:AdvancedDataGrid id="task_list_dg" width="100%" height="95%" paddingLeft="0" paddingTop="0" paddingBottom="0">
    <mx:columns>
        <mx:AdvancedDataGridColumn headerText="Receiving date" dataField="rd"/>
        <mx:AdvancedDataGridColumn headerText="Msg type" dataField="mt"/>
        <mx:AdvancedDataGridColumn headerText="SSD" dataField="ssd"/>
        <mx:AdvancedDataGridColumn headerText="Shipping site" dataField="sss"/>
        <mx:AdvancedDataGridColumn headerText="File name" dataField="fn"/>
        <mx:AdvancedDataGridColumn headerText="Batch number" dataField="bn"/>
    </mx:columns>
</mx:AdvancedDataGrid>

//xml example from server
<batches>
    <batch>
        <rd>2010-04-23 16:31:00.0</rd>
        <mt>SC1REVISION01</mt>
        <ssd>2010-02-18 00:00:00.0</ssd>
        <sss>100000009</sss>
        <fn>Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv</fn>
        <bn>10041</bn>
    </batch>
<batches>

//来自服务器的xml示例
2010-04-23 16:31:00.0
SC1修订01
2010-02-18 00:00:00.0
100000009
修订版1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-预定装运日期20100218.csv
10041
[/code]

xml的显示方式与上面示例中datagrid列中的显示方式基本相同


非常感谢您的帮助。

我使用简单的xml文本尝试了您的示例的简化版本,对我来说效果很好

这是我得到的

    <fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        protected function onCreationCompleteHandler(event:FlexEvent):void
        {
            task_list_dg.dataProvider = data..batch;
        }

        private var data:XML = //xml example from server
            <batches>
            <batch>
                <rd>2010-04-23 16:31:00.0</rd>
                <mt>SC1REVISION01</mt>
                <ssd>2010-02-18 00:00:00.0</ssd>
                <sss>100000009</sss>
                <fn>Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv</fn>
                <bn>10041</bn>
            </batch>
            </batches>;



    ]]>
</fx:Script>

<mx:AdvancedDataGrid id="task_list_dg" width="100%" height="95%" paddingLeft="0" paddingTop="0" paddingBottom="0">
    <mx:columns>
        <mx:AdvancedDataGridColumn headerText="Receiving date" dataField="rd"/>
        <mx:AdvancedDataGridColumn headerText="Msg type" dataField="mt"/>
        <mx:AdvancedDataGridColumn headerText="SSD" dataField="ssd"/>
        <mx:AdvancedDataGridColumn headerText="Shipping site" dataField="sss"/>
        <mx:AdvancedDataGridColumn headerText="File name" dataField="fn"/>
        <mx:AdvancedDataGridColumn headerText="Batch number" dataField="bn"/>
    </mx:columns>
</mx:AdvancedDataGrid>

不得不求助于这个怪物-->有没有更好的办法

        protected function updateBatchDataGridDP():void{
            var batches:XML = new XML(findShipmentBatchesResult.lastResult);
            task_list_dg.dataProvider = batches.batch;
            var task_list_col1:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col1.dataField = "@rd";
            task_list_col1.headerText = "Receiving date";
            var task_list_col2:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col2.dataField = "@mt";
            task_list_col2.headerText = "Msg type";
            var task_list_col3:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col3.dataField = "@ssd";
            task_list_col3.headerText = "SSD";
            var task_list_col4:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col4.dataField = "@sss";
            task_list_col4.headerText = "Shipping site";
            task_list_status.text = batches.batch.@sss;
            var task_list_col5:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col5.dataField = "@fn";
            task_list_col5.headerText = "File name";
            var task_list_col6:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col6.dataField = "@bn";
            task_list_col6.headerText = "Batch number";
            var myColumns:Array = new Array();
            myColumns.push(task_list_col1);
            myColumns.push(task_list_col2);
            myColumns.push(task_list_col3);
            myColumns.push(task_list_col4);
            myColumns.push(task_list_col5);
            myColumns.push(task_list_col6);
            task_list_dg.columns = myColumns;
        }
使用此xml结构:

<batches>
    <batch rd="2010-04-23 16:31:00.0" mt="SC1REVISION01" ssd="2010-02-18 00:00:00.0" sss="Quanta" fn="Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv" bn="SHA201004230033" />
    <batch rd="2010-04-23 16:32:14.0" mt="SC1" ssd="2010-02-11 00:00:00.0" sss="Quanta" fn="DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100211.csv" bn="SHA201004230043" />
    <batch rd="2010-04-23 16:35:51.0" mt="PRESHIP" ssd="2010-02-15 00:00:00.0" sss="Quanta" fn="DF-Ocean-PRESHIPSUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100215.csv" bn="SHA201004230045" />
</batches>


dude,说真的,算出代码标签,这是不可回答的..我正在算出标签的过程中,无论如何,这是输出。ThnX实际上不是标签,而是每行之前的标签空间。数据网格以原始格式显示xml。每个列的整个xml内容。数据/服务选项卡看起来像FindShipmentBatch(searchDate:string,searchHubId:string\字符串返回类型应该是xml吗?当我尝试xml时,似乎有很多返回类型选项*我假设一个简单的字符串就足够了,那么客户端将足够智能地解析内容。在我的响应中添加了建议(编辑)(lastResult..batch)本,我想给你回电话,但有一些更紧急的事情发生了——我需要先把它们处理掉!我保证尽快回来!;)顺便说一句,它看起来可以工作,不,我没有试过那样做!你不应该做所有的事情,那是不对的。你可以在列标记中指定和@attribute:哦,伙计,这就是原因……我的网格没有@符号!我从互联网上复制的示例使用了它。是的,伙计,现在我看到我的错误了!请再回答一个问题,我会的给你分配正确的答案:)是的,是@符号->我想我需要休息。谢谢你,伙计。
<batches>
    <batch rd="2010-04-23 16:31:00.0" mt="SC1REVISION01" ssd="2010-02-18 00:00:00.0" sss="Quanta" fn="Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv" bn="SHA201004230033" />
    <batch rd="2010-04-23 16:32:14.0" mt="SC1" ssd="2010-02-11 00:00:00.0" sss="Quanta" fn="DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100211.csv" bn="SHA201004230043" />
    <batch rd="2010-04-23 16:35:51.0" mt="PRESHIP" ssd="2010-02-15 00:00:00.0" sss="Quanta" fn="DF-Ocean-PRESHIPSUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100215.csv" bn="SHA201004230045" />
</batches>