문제

나는 왜 입장에 액세스 할 수 없는지 알아 내려고 몇 시간 동안 책상에서 머리를 두드려 왔습니다. 가능한 모든 방법을 시도해 보았지만 실패했습니다.

그러나 xml.children을 사용하여 모든 노드를 살펴보면 저자 노드가 나타납니다.

저자 노드가 원자 네임 스페이스와는 별개로 표시되지만 다른 네임 스페이스와 같은 네임 스페이스가 없습니다.

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

}

도움이 되었습니까?

해결책

이 시도 ...

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

다른 팁

네임 스페이스를 완전히 제거 할 수도 있습니다 ... 여기에 내가 찾은 최상의 솔루션이 있습니다 (네임 스페이스 세부 정보를 속성으로 바꿉니다).

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

MXML 파일 어딘가에 다음 코드 스 니펫이 필요합니다 (XML 문서로 작업하기 전에)

<mx:Script>
    <![CDATA[

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

    ]]>
</mx:Script>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top