1

コードブローを使用して、次の石鹸応答を解析しようとしています。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:components="components.*"
               xmlns:hellos="services.hellos.*"
               height="957"  creationComplete="initApp()" > 
    <fx:Style source="Styles.css"/>
    <fx:Script>

        <![CDATA[

            import mx.controls.Alert;

            private namespace invesbot = "http://Services.com";
            use namespace invesbot;

            private namespace a = "http://schemas.xmlsoap.org/soap/envelope/";
            private namespace b = "http://www.w3.org/2001/XMLSchema"; 
            private namespace c = "http://www.w3.org/2001/XMLSchema-instance";
            use namespace a;
            use namespace b;
            use namespace c;

            [Bindable]
            var _result:*



            private function initApp():void
            {
                myService.mycustomers();
            }

        ]]> 
    </fx:Script>
    <fx:Declarations>
        <mx:WebService id="myService" wsdl="http://localhost:8081/WebServiceTest/services/Hellos?wsdl" 
                       showBusyCursor="true" 
                       fault="Alert.show(event.fault.faultString), 'Error'">
            <mx:operation name="mycustomers" resultFormat="e4x">
                <mx:request>
                </mx:request>
            </mx:operation>
        </mx:WebService>

    </fx:Declarations>
<mx:HBox>
        <mx:Text
            text="{myService.mycustomers.lastResult.mycustomersReturn.name}"
            />
    </mx:HBox>
</s:Application>

SOAP 応答は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <mycustomersResponse xmlns="http://Services.com">
      <mycustomersReturn>
        <age>28</age>
        <name>John</name>
      </mycustomersReturn>
      <mycustomersReturn>
        <age>29</age>
        <name>Alex</name>
      </mycustomersReturn>
      <mycustomersReturn>
        <age>30</age>
        <name>Jack</name>
      </mycustomersReturn>
    </mycustomersResponse>
  </soapenv:Body>
</soapenv:Envelope>

上記のコードを使用すると、出力は次のようになります

<name xmlns="http://Services.com" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">John</name>
<name xmlns="http://Services.com" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Alex</name>
<name xmlns="http://Services.com" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Jack</name>

しかし、次のコードを使用して結果をドロップダウンボックスに入れると、次のエラーが発生します

<s:FormItem label="Employee:"> 
        <s:DropDownList id="dropDownList3"
                        labelField="name"
                        dataProvider ="{myService.mycustomers.lastResult.mycustomersReturn}"/>
    </s:FormItem>

TypeError: エラー #1034: 型強制に失敗しました: XMLList@106e9af1 を mx.collections.IList に変換できません。

4

1 に答える 1

1

データをXMLListCollectionでラップする必要があります配列の場合と同じように、それらをArrayCollectionsにラップする必要があります。新しいバージョンのflexsdk4.9では、VectorListsとVectorCollectionsを作成することもできます。

例えば:

var iList:IList =  new XMLListCollection(myService.mycustomers.lastResult.mycustomersReturn);
dataProvider = iList;
于 2013-01-15T08:31:59.610 に答える