Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: parsowanie xml we flashu
Forum PHP.pl > Forum > Po stronie przeglądarki
karis
mam problem z parsowaniem pliku xml we flashu

plik xml ma taką konstrukcje:

  1. <content>
  2. <field>
  3. <next>
  4. <tag>somethink</tag>
  5. </next>
  6. </field>
  7. </content>


chce wyciągnac zawartosc tagu <tag>

i zacząłem to tak robic:


Kod
var myXML:XML = new XML();

myXML.ignoreWhite=true;

myXML.load("myxml.xml");
myXML.onLoad = function(success)
{
     if (success)
     {
         var content = myXML.firstChild.childNodes;
         
         var dueContent = content[2];
        
        
         trace(dueContent)
        
        
     }
};



bardzo proszę o pomoc
Pawel_W
dawno nie pisałem nic w action script ale o ile się nie mylę to przez childNodes zwracasz się do węzłów potomnych znajdujących się jedynie 1 poziom niżej, a Ty potrzebujesz 3 poziomy, dlatego to powinno chyba wyglądać tak:

Kod
var content = myXML.firstChild.childNodes[0].childNodes[0].nodeValue;
karis
zapomniałem dodać, że w tagu <field> mam x potomnych
wookieb
[JAVASCRIPT] pobierz, plaintext
  1. var x:XML = <root>
  2. <test>
  3. <element>elements</element>
  4. <b>hehehe</b>
  5. </test>
  6. <test>
  7. <element>elements</element>
  8. <b>hehehe</b>
  9. </test>
  10. </root>;
  11. trace(x.descendants('b').length());
[JAVASCRIPT] pobierz, plaintext
karis
to mi nie dziala ani w as2 ani w as3
wookieb
No a czym się objawia NIE działanie?
karis
undefined w outpucie
wookieb
Pokaż swojego xmla, kod jaki teraz masz.
karis
To jest mój XML

http://wklej.org/hash/551d9b701ed/

A to mój kod AS

http://wklej.org/hash/63b3b1b46b1/


chcę wyciągnąć zawartość tagu <open>
wookieb
Czytałeś co Ci dałem czy udajesz?
karis
czytałem dobrze , sprawdzałeś ten kod? bo mi to nie działa i uwierz mi, że nie kopiowałem żywcem tylko pozmieniałem dla siebie na odpowiedni tag

w as2 dostaje komunikat , że nie ma tekiej metody descendants a w as3 taki:

TypeError: Error #1006: Wyrażenie value nie jest funkcją.
at Beznazwy_fla::MainTimeline/frame1()
wookieb
Właśnie, że kopiujesz półżywcem.
Metoda zwraca obiekt typu XMLList czyli LISTĘ znalezionych elementów (obiekt ten nie obsługuje value()). Możesz po niej przelecieć albo użyć
[JAVASCRIPT] pobierz, plaintext
  1. trace(x.descendants('b')[0].text());
[JAVASCRIPT] pobierz, plaintext

Opcji jest więcej
karis
zobacz tak robie a dostaje komunikat:

Brak metody o nazwie descendants

[JAVASCRIPT] pobierz, plaintext
  1. var myXML:XML = new XML();
  2. myXML.ignoreWhite=true;
  3. myXML.load("dump_data.xml");
  4. myXML.onLoad = function(success)
  5. {
  6. if (success)
  7. {
  8.  
  9. trace(myXML.descendants('open')[0].text());
  10.  
  11.  
  12.  
  13. }
  14. };
[JAVASCRIPT] pobierz, plaintext
wookieb
Ponieważ jest ona dostępna w as3. W as2 już się nie pisze.
karis
to jak ma ten kod wyglądać w as3 nie znam kompletnie as3, więc proszę napisz mi jak ma wygladać
karis
coś już ruszyło, ale nadal mam taki problem

otóż dostaję komunikat:

Zwracana wartość musi być zdefiniowana


Oto mój kod:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var xmlLoader:URLLoader = new URLLoader();
  3. var xmlData:XML = new XML();
  4.  
  5. xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
  6.  
  7. xmlLoader.load(new URLRequest("dump_data.xml"));
  8.  
  9.  
  10. function LoadXML(e:Event):void
  11. {
  12.  
  13. xmlData = new XML(e.target.data);
  14. var open = ParseOpen(xmlData);
  15.  
  16. trace(open);
  17.  
  18.  
  19.  
  20.  
  21.  
  22. }
  23.  
  24. function ParseOpen(xmlData:XML):void
  25. {
  26.  
  27. var open = xmlData.descendants('open')[0].text();
  28.  
  29. return open;
  30.  
  31.  
  32. }
  33.  
[JAVASCRIPT] pobierz, plaintext


ten błąd występuje rzekomo w linii 28 czyli tam gdzie jest return open;
wookieb
Linia 24 zamien void na string. Zwracasz przecież ciąg znaków.
karis
Cytat(wookieb @ 16.08.2010, 13:52:32 ) *
Linia 24 zamien void na string. Zwracasz przecież ciąg znaków.



super dzieki!

jeszcze gdybyś mi tylko powiedział jak pobrać w as3 parametry np: flash.swf?param1=sth

wookieb
[JAVASCRIPT] pobierz, plaintext
  1. root.loaderInfo.parameters['nazwa_parametru']
  2. // lub
  3. root.loaderInfo.parameters.nazwa_parametru;
[JAVASCRIPT] pobierz, plaintext
karis
czemu jak osadze flasha w htmlu i wstawie to na serwer nie działa przekierowanie na podstrone z flasha?

mam taki kod:

[JAVASCRIPT] pobierz, plaintext
  1. var request:URLRequest = new URLRequest(link);
  2. navigateToURL(request, '_blank');
[JAVASCRIPT] pobierz, plaintext


normalnie lokalnie działa
wookieb
Ponieważ przeglądarka może blokować dostęp otwieranie nowych okien.
Ustaw w htmlu (wyświetlającym flasha) allowScriptAccess na always. Jeżeli to nie pomoże dodaj allowDomain na all
karis
osadzam go tak:

  1. classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
  2. codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
  3. width="375" height="300">
  4. <param name="movie" value="parser.swf">
  5. <param name="allowScriptAccess" value="always">
  6. <param name="allowDomain" value="always">
  7. <embed
  8. pluginspage="http://www.macromedia.com/go/getflashplayer"
  9. type="application/x-shockwave-flash"
  10. src="parser.swf"
  11. width="375" height="300"
  12. allowScriptAccess="all"
  13. allowDomain="all">
  14. </object>
  15.  


i nie działa nadal przekierowanie
wookieb
allowDomain na all. Poza tym pokaż jaki link chcesz otworzyć.
karis
ustawiłem i nadal nic

chce otworzyc link zewnętrzny np http:/wp.pl
wookieb
Wypuść to online żebysmy mogli zobaczyć bo Ci nie wierzę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.