views:

1125

answers:

2

I've been banging my head on my desk for hours trying to figure out why I can't access the entry.author.name content? I've tried every possible way to access it but failed.

But when I loop through all nodes with xml.children I see the author node.

I see the author node is apart of the atom namespace but it doesn't have a namespace like the other namespaces.

package { import flash.display.Sprite;
public class Gdata extends Sprite
{

 private var xml:XML = <entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" 
 xmlns:gd="http://schemas.google.com/g/2005" xmlns:yt="http://gdata.youtube.com/schemas/2007"&gt;           
    http://www.w3.org/2005/Atom,http://search.yahoo.com/mrss/,http://schemas.google.com/g/2005,             http://gdata.youtube.com/schemas/2007
     <id>
       http://gdata.youtube.com/feeds/api/videos/bwbZJw-C4Jk
     </id>
     <published>
       2009-04-17T19:11:48.000Z
     </published>
     <updated>
       2009-04-29T10:19:50.000Z
     </updated>
     <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="News" label="News & Politics"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="Garofalo"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="Olbermann"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="commentary"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="Janeane"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="news"/>
     <category scheme="http://schemas.google.com/g/2005#kind" term="http://gdata.youtube.com/schemas/2007#video"/&gt;
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="Keith"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="analysis"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="Party"/>
     <category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="Tea"/>
     <title type="text">
       Janeane Garofalo Calls Tea Party Protesters Racists
     </title>
     <content type="text">
       Janeane Garofalo: http://tinyurl.com/cr6rt8

   EPA: http://tinyurl.com/clpyqo

   Veterans: http://tinyurl.com/ckbhb6

   DHS: http://tinyurl.com/cctf54

   DHS2: http://tinyurl.com/dahaxr

   John Ziegler: http://tinyurl.com/d7qbo4

   Teabagging: http://tinyurl.com/ddskjo
     </content>
     <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=bwbZJw-C4Jk"/&gt;
     <link rel="http://gdata.youtube.com/schemas/2007#video.responses" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/bwbZJw-C4Jk/responses"/&gt;
     <link rel="http://gdata.youtube.com/schemas/2007#video.related" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/bwbZJw-C4Jk/related"/&gt;
     <link rel="http://gdata.youtube.com/schemas/2007#mobile" type="text/html" href="http://m.youtube.com/details?v=bwbZJw-C4Jk"/&gt;
     <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/bwbZJw-C4Jk"/&gt;
     <author>
       <name>
         HowTheWorldWorks
       </name>
       <uri>
         http://gdata.youtube.com/feeds/api/users/howtheworldworks
       </uri>
     </author>
     <gd:comments>
       <gd:feedLink href="http://gdata.youtube.com/feeds/api/videos/bwbZJw-C4Jk/comments" countHint="2249"/>
     </gd:comments>
     <media:group>
       <media:category label="News & Politics" scheme="http://gdata.youtube.com/schemas/2007/categories.cat"&gt;
         News
       </media:category>
       <media:content url="http://www.youtube.com/v/bwbZJw-C4Jk&amp;f=videos&amp;app=youtube_gdata" type="application/x-shockwave-flash" medium="video" isDefault="true" expression="full" duration="236" yt:format="5"/>
       <media:content url="rtsp://rtsp2.youtube.com/CiILENy73wIaGQmZ4IIPJ9kGbxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp" type="video/3gpp" medium="video" expression="full" duration="236" yt:format="1"/>
       <media:content url="rtsp://rtsp2.youtube.com/CiILENy73wIaGQmZ4IIPJ9kGbxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp" type="video/3gpp" medium="video" expression="full" duration="236" yt:format="6"/>
       <media:description type="plain">
         Janeane Garofalo: http://tinyurl.com/cr6rt8
       </media:description>
       <media:keywords>
         Janeane, Garofalo, Keith, Olbermann, Tea, Party, commentary, analysis, news
       </media:keywords>
       <media:player url="http://www.youtube.com/watch?v=bwbZJw-C4Jk"/&gt;
       <media:thumbnail url="http://i.ytimg.com/vi/bwbZJw-C4Jk/default.jpg" height="90" width="120" time="00:01:58"/>
       <media:thumbnail url="http://i.ytimg.com/vi/bwbZJw-C4Jk/1.jpg" height="90" width="120" time="00:00:59"/>
       <media:thumbnail url="http://i.ytimg.com/vi/bwbZJw-C4Jk/3.jpg" height="90" width="120" time="00:02:57"/>
       <media:thumbnail url="http://i.ytimg.com/vi/bwbZJw-C4Jk/0.jpg" height="240" width="320" time="00:01:58"/>
       <media:title type="plain">
         Janeane Garofalo Calls Tea Party Protesters Racists
       </media:title>
       <yt:duration seconds="236"/>
     </media:group>
     <gd:rating average="3.9231105" max="5" min="1" numRaters="2289" rel="http://schemas.google.com/g/2005#overall"/&gt;
     <yt:statistics favoriteCount="304" viewCount="33463"/>
   </entry>;

 namespace atom = "http://www.w3.org/2005/Atom"
 namespace media ="http://search.yahoo.com/mrss/";
 namespace gd = "http://schemas.google.com/g/2005";
 namespace yt = "http://gdata.youtube.com/schemas/2007";

 public function Gdata()
 {
  var atom:Namespace = new Namespace();
  trace("0",xml.children()[22]);    
  trace("1",xml.inScopeNamespaces());
  trace("2",xml..media::group);   
  trace("3",xml..yt::statistics.@favoriteCount);   
  trace("4",xml..yt::duration.@seconds);   
  trace("5",xml..author ); // why?????????
  trace("6",xml.author ); // why?????????

  var x:int = 0;
  for each (var i in xml.children())
  {
   if(i.localName() == 'author')
   {
    trace("author", i);
   }
  }   

 }
}

}

A: 

Somewhere in your mxml file you need the following code snippet (before you work with your XML Document)

<mx:Script>
    <![CDATA[

        private namespace atom = "http://www.w3.org/2005/Atom";
        use namespace atom; // This is the important line right here!!!!

    ]]>
</mx:Script>
Justin Niessner
+2  A: 

Try this ...

public function Gdata()
{
    var atom:Namespace = new Namespace("http://www.w3.org/2005/Atom");
    var media:Namespace = new Namespace("http://search.yahoo.com/mrss/");
    var gd:Namespace = new Namespace("http://schemas.google.com/g/2005");
    var yt:Namespace = new Namespace("http://gdata.youtube.com/schemas/2007");

    default xml namespace = atom; // IMPORTANT

    trace("0",xml.children()[22]);                  
    trace("1",xml.inScopeNamespaces());
    trace("2",xml..media::group);                   
    trace("3",xml..yt::statistics.@favoriteCount);                  
    trace("4",xml..yt::duration.@seconds);                  
    trace("5",xml..author ); // why?????????
    trace("6",xml.author ); // why?????????

    var x:int = 0;
    for each (var i in xml.children())
    {
        if(i.localName() == 'author')
        {
            trace("author", i);
        }
    }
}
imaginaryboy
<code>default xml namespace = atom</code> did the trick! Thanks
jspooner