Frage

Ich habe meinen Kopf wurde hämmern auf meinem Schreibtisch für Stunden, um herauszufinden, warum ich nicht die entry.author.name Inhalt zugreifen kann? Ich habe jede erdenkliche Art und Weise versucht, darauf zuzugreifen scheiterte aber.

Aber wenn ich Schleife durch alle Knoten mit xml.children Ich sehe den Autor Knoten.

Ich sehe der Autor Knoten abgesehen von dem Atom-Namensraum ist, aber es hat keinen Namensraum wie die anderen 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"> 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"/> <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"/> <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"/> <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"/> <link rel="http://gdata.youtube.com/schemas/2007#mobile" type="text/html" href="http://m.youtube.com/details?v=bwbZJw-C4Jk"/> <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/bwbZJw-C4Jk"/> <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"> News </media:category> <media:content url="http://www.youtube.com/v/bwbZJw-C4Jk&f=videos&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"/> <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"/> <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); } } } }

}

War es hilfreich?

Lösung

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);
        }
    }
}

Andere Tipps

Sie können auch Streifen aus nur den Namensraum vollständig ... hier ist die beste Lösung, die ich gefunden (es einfach verwandelt sich die Namespace-Details in Attribute):

public function removeNS(data:XML):XML {
    var myXML;
    try {
        var modified:String = data.toString().replace("xmlns=", "xmlns:default=");
        var pattern:RegExp = new RegExp(":(?!/)", "gi");
        var transmuted:String = modified.replace(pattern, "_");
        myXML = new XML(transmuted);
    } catch (e:Error) {
        myXML = data;
    }
    return myXML;
}

Irgendwo in Ihrer MXML-Datei benötigen Sie den folgenden Code-Schnipsel (bevor Sie mit Ihrem XML-Dokument arbeiten)

<mx:Script>
    <![CDATA[

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

    ]]>
</mx:Script>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top