0 Replies Latest reply on Apr 4, 2008 12:43 AM by Smily1979

    Select SOAP XML nodes from a XMLList in a DataGrid

    Smily1979
      Hi Flex Community,

      I have a web service with a SOAP response (XML Document) and store the result in a XMLList. Here the SOAP response:

      <method:ReportListResponse xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:sql=" http://schemas.microsoft.com/sqlserver/2004/SOAP" ... xmlns:method=" http://<servername>/Server Objects/Endpoints/SOAP">
      <method:ReportListResult>
      <sqlresultstream:SqlRowSet xsi:type="sqlsoaptypes:SqlRowSet" msdata:UseDataSetSchemaOnly="true" msdata:UDTColumnValueWrapped="true">
      <xsd:schema targetNamespace=" http://schemas.microsoft.com/sqlserver/2004/sqltypes">
      <xsd:simpleType name="varchar">
      <xsd:restriction base="xsd:string"/>
      </xsd:simpleType>
      </xsd:schema>
      <xsd:schema targetNamespace="urn:schemas-microsoft-com:sql:SqlRowSet1" elementFormDefault="qualified">
      <xsd:import namespace=" http://schemas.microsoft.com/sqlserver/2004/sqltypes"/>
      <xsd:element name="SqlRowSet1" msdata:IsDataSet="true" msdata:DataSetNamespace="urn:schemas-microsoft-com:sql:SqlDataSet" msdata:DataSetName="SqlDataSet">
      <xsd:complexType>
      <xsd:sequence>
      <xsd:element name="row" minOccurs="0" maxOccurs="unbounded">
      <xsd:complexType>
      <xsd:sequence>
      <xsd:element name="NAME" minOccurs="0">
      <xsd:simpleType>
      <xsd:restriction base="sqltypes:varchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
      <xsd:maxLength value="255"/>
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
      </xsd:sequence>
      </xsd:complexType>
      </xsd:element>
      </xsd:sequence>
      </xsd:complexType>
      </xsd:element>
      </xsd:schema>
      <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
      <SqlRowSet1 xmlns="urn:schemas-microsoft-com:sql:SqlRowSet1">
      <row>
      <NAME>OTTO</NAME>
      </row>
      <row>
      <NAME>ANNA</NAME>
      </row>
      ...
      </SqlRowSet1>
      </diffgr:diffgram>
      </sqlresultstream:SqlRowSet>
      <sqlresultstream:SqlRowCount xsi:type="sqlrowcount:SqlRowCount">
      <sqlrowcount:Count>
      31
      </sqlrowcount:Count>
      </sqlresultstream:SqlRowCount>
      <sqlresultstream:SqlResultCode xsi:type="sqlsoaptypes:SqlResultCode">
      0
      </sqlresultstream:SqlResultCode>
      </method:ReportListResult>
      </method:ReportListResponse>


      I want to select the needed rows and output the results in a datagrid:

      private function webServiceResult(event:ResultEvent):void
      {
      trace("Ergebnis erhalten");
      // create a XML object for result
      var ResultXML:XML = (XML)(event.result);
      //var th:Namespace = ResultXML.namespace();
      //ResultXML.setNamespace(th);

      // search the xml structure an d find the SqlRowSet1 tag
      var sqlSet:XMLList = ResultXML.descendants("row");

      trace("test=" + ResultXML.toString());
      var ResultRows:XMLList = ResultXML.elements("NAME");
      // output the identified rows
      trace("#rows=" + ResultRows.length());

      dataGridItems.removeAll();
      // put all identified items ...
      for each(var item:XML in ResultRows)
      {
      // ... in datagrid rows
      dataGridItems.addItem(
      {
      COMPOUND_NAME: item.COMPOUND_NAME
      });
      }
      }
      <mx:DataGrid id="listRowsOutput" dataProvider="{dataGridItems}" x="353" y="108" width="134">
      <mx:columns>
      <mx:DataGridColumn headerText="COMPOUND_NAME" dataField="COMPOUND_NAME"/>
      </mx:columns>
      </mx:DataGrid>


      The FlexBuilder has the xml structure but stores nothing in the XMLList (Trace: rows = 0). Could anybody help me and describe how I get the required tags?

      Thx