Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-09-2006, 12:36   #1 (permalink)
Markus Raab
 
Benutzerbild von derRaab
 
Registriert seit: Aug 2001
Ort: Berlin Friedrichshain
Beiträge: 928
Neues XML-Objekt mit Namespaces

Hallo Leute,

ich versuche mich in das neue XML-Objekt einzuarbeiten und habe jetzt so halbwegs begriffen wie das neue funktioniert. Nur habe ich ein Problem an dem ich mir momentan die Zähne ausbeisse.

In der Methode "recieveFlickrResult" versuche ich auf einen Attributwert zuzugreifen. Leider ohne Erfolg. Erst wenn ich den Knoten als String konvertiere und dann wieder ein neues XML-Objekt daraus mache kann ich darauf zugreifen.

Kann mir jemand erklären warum das so ist, bzw. wo der Fehler liegt? Und ist das mit den Namespaces so korrekt umgesetzt?

Hier mal der Code:
ActionScript:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
  3.  
  4.     <mx:HTTPService id="flickrService" url="http://api.flickr.com/services/soap/" useProxy="false" contentType="application/xml" resultFormat="xml"></mx:HTTPService>
  5.  
  6.  
  7.     <mx:Script>
  8.         <![CDATA[
  9.  
  10.     public var apiURL:String = "http://api.flickr.com/services/soap/";
  11.  
  12.     public var api_key:String = "0cdbd0b93883f563e3bea67611e44c83";
  13.     public var nsid:String;
  14.    
  15.    
  16.     public var urlRequest:URLRequest;
  17.     public var resultLoader:URLLoader;
  18.        
  19.     public function debug(s:String):void{
  20.         debugTxt.text += s + "\r";       
  21.     }
  22.     var sNS:Namespace = new Namespace("http://www.w3.org/2003/05/soap-envelope");
  23.     var xNS:Namespace = new Namespace("urn:flickr");
  24.  
  25.     public function generateSOAPRequestXML(method:String, params:Object):XML{
  26.        
  27.         var requestXML:XML =    <s:Envelope
  28.                                     xmlns:s="http://www.w3.org/2003/05/soap-envelope"
  29.                                     xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
  30.                                     xmlns:xsd="http://www.w3.org/1999/XMLSchema"
  31.                                 >
  32.                                     <s:Body>
  33.                                         <x:FlickrRequest xmlns:x="urn:flickr">
  34.                                             <method>{method}</method>
  35.                                             <api_key>{api_key}</api_key>
  36.                                         </x:FlickrRequest>
  37.                                     </s:Body>
  38.                                 </s:Envelope>
  39.                                
  40.         var flickrXMLList:XMLList = requestXML.sNS::Body.xNS::FlickrRequest;
  41.        
  42.         for (var param:String in params){
  43.             var newparamNode:XML = <{param}>{params[param]}</{param}>         
  44.             flickrXMLList.appendChild(newparamNode);
  45.         }
  46.  
  47.         return requestXML;
  48.     }
  49.    
  50.     public function extractFlickrResponse(response:XML):XMLList{
  51.         return response.sNS::Body.xNS::FlickrResponse;
  52.     }
  53.  
  54.  
  55.     public function startFlickrRequest(requestXML:XML):void{
  56.        
  57.         urlRequest = new URLRequest(apiURL);
  58.         urlRequest.contentType = "text/xml";
  59.         urlRequest.method = URLRequestMethod.POST;
  60.         urlRequest.data = requestXML;
  61.        
  62.         resultLoader = new URLLoader(urlRequest);
  63.         resultLoader.addEventListener("complete", recieveFlickrResult);
  64.        
  65.     }
  66.     public function recieveFlickrResult(evt:Event):void{
  67.         if (evt.type == "complete"){
  68.             var resultXML:XML = new XML(resultLoader.data);
  69.             debug("resultXML :\r" + resultXML);
  70.             var response:XMLList = extractFlickrResponse(resultXML);
  71.             debug("");
  72.             debug("response :\r" + response);
  73.            
  74.             debug("response.@nsid : " + response.@nsid); // liefert KEINEN Attributwert!
  75.  
  76.             var newXML:XML = new XML(response.toString());
  77.             debug("");
  78.             debug("newXML :\r" + newXML);
  79.             debug("");
  80.             debug("newXML.@nsid : " + newXML.@nsid); // liefert den Attributwert
  81.         };   
  82.     }
  83.    
  84.  
  85.     public function init():void{
  86.        
  87.         var nsidRequestXML:XML = generateSOAPRequestXML('flickr.people.findByUsername', {username :"der_raab"});
  88.        
  89.         startFlickrRequest(nsidRequestXML);
  90.  
  91.     }
  92.            
  93.            
  94.         ]]>
  95.     </mx:Script>
  96.     <mx:TextArea id="debugTxt" text="" left="10" right="10" bottom="10" top="10"/>
  97.    
  98. </mx:Application>
In der Methode "recieveFlickrResult" versuche ich auf einen Attributwert zuzugreifen. Leider ohne Erfolg. Erst wenn ich den Knoten als String konvertiere und dann wieder ein neues XML-Objekt daraus mache kann ich darauf zugreifen.

Kann mir jemand erklären warum das so ist, bzw. wo der Fehler liegt? Und ist das mit den Namespaces so korrekt umgesetzt?

Danke euch!
derRaab ist offline   Mit Zitat antworten
Alt 08-01-2010, 14:19   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 9
Ich finde es schwierig dazu etwas zu sagen, wenn man das XML-Dokument nicht kennt. Kannst du mal ein Beispiel des hereinkommenden XML mitliefern?

Oh, oh, man sollte doch vielleicht mal auf das Datum schauen bevor man Antwortet. Drei Jahre später ist das wohl nicht mehr ganz so aktuell...

Geändert von gregorw (08-01-2010 um 15:14 Uhr)
gregorw ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele