Avatar billede oersted Novice
21. februar 2005 - 23:14 Der er 19 kommentarer og
1 løsning

lidt hjælp til xml - flash

hvordan henter jeg lettest denne xml ind i flash, så den lister de variabler som er angivet:

<news><entry date="her står dato"><title>min titel 1</title><sted>sted 1</sted><body>Program:  bla bla bla nummer 1</body></entry><entry date="her står dato nr 2"><title>min titel 2</title><sted>sted 2</sted><body>Program:  bla bla bla nummer 2</body></entry></news>

der skal vist ændres lidt i denne kode:


var max_news_items = 20;
GetTitleText = function (news_xml, entry_index) {
    var entries = news_xml.firstChild.childNodes;
    var title_element = entries[entry_index].firstChild;
    return title_element.firstChild.nodeValue;
};
GetBodyText = function (news_xml, entry_index) {
    var entries = news_xml.firstChild.childNodes;
    var body_element = entries[entry_index].firstChild.nextSibling;
    return body_element.firstChild.nodeValue;
};
GetEntry = function (news_xml, index) {
    var entries = news_xml.firstChild.childNodes;
    return entries[index];
};
GetNewsCount = function (news_xml) {
    var entries = news_xml.firstChild.childNodes;
    return entries.length;
};
ShowNews = function (news_xml) {
    if (!news_xml.firstChild.hasChildNodes()) {
        txt1.text = "Ingen koncerter i kalenderen ...";
        return (0);
    }
    var entries = news_xml.firstChild.childNodes;
    txt1.txt.text = "";
    for (var i = 0; i<entries.length; i++) {
        var title = GetTitleText(news_xml, i);
        var body = GetBodyText(news_xml, i);
        txt1.htmlText += entries[i].attributes.date+"<br>";
        txt1.htmlText += titel+"<br><br>";
        txt1.htmlText += body+"<br><br>";
        txt1.htmlText += "_______________________________<br>";
    }
};

RefreshNews = function (news_xml) {
    txt1.htmlText = "<i>Loading...</i>";
    news_xml.load(xml_file+"?"+new Date().getTime());
};
Avatar billede barklund Nybegynder
21. februar 2005 - 23:47 #1
Prøv kort og godt med:

GetData = function(entry) {
    var o = new Object();
    o.date = entry.attributes.date;
    o.title= entry.childNodes[0].nodeValue;
    o.sted = entry.childNodes[1].nodeValue;
    o.body = entry.childNodes[2].nodeValue;
}
ShowNews = function (news_xml) {
    if (!news_xml.firstChild.hasChildNodes()) {
        txt1.text = "Ingen koncerter i kalenderen ...";
        return (0);
    }
    var entries = news_xml.firstChild.childNodes;
    txt1.txt.text = "";
    for (var i = 0; i<entries.length; i++) {
        var entry = GetData(entries[i]);
        txt1.htmlText += entry .date+"<br>";
        txt1.htmlText += entry.title+"<br><br>";
        txt1.htmlText += entry.body+"<br><br>";
        txt1.htmlText += entry.sted+"<br><br>";
        txt1.htmlText += "_______________________________<br>";
    }
};

Eller noget i den stil :)

--
Morten Barklund
Avatar billede oersted Novice
21. februar 2005 - 23:49 #2
joo

**Error** Scene=Scene 1, layer=Editing, frame=1:Line 2: Operator '=' must be followed by an operand
        var o = new Object();

**Error** Scene=Scene 1, layer=Editing, frame=1:Line 3: Syntax error.
        o.date = entry.attributes.date;
Avatar billede oersted Novice
21. februar 2005 - 23:55 #3
... fordi man ikke kan paste fra eksperten p.g.a. mellem rummmene åbenbart....

anyway nu loader den ikke noget ..
Avatar billede barklund Nybegynder
22. februar 2005 - 10:24 #4
Du skal jo stadig have noget med:

var news_xml = new XML();
RefreshNews = function (news_xml) {
    txt1.htmlText = "<i>Loading...</i>";
    news_xml.load(xml_file+"?"+new Date().getTime());
};
RefreshNews();

Og du skal ved også have en onLoad på din news_xml - som heller ikke var med i det ovenstående. :)

--
Morten Barklund
Avatar billede oersted Novice
22. februar 2005 - 12:48 #5
hmm: med fgl får jeg loadet dato og sted ind, und nix mehr :-(

var xml_file = "readwrite/news.xml";
var save_script = "news_save.php";

var news_xml = new XML();
news_xml.ignoreWhite = true;
news_xml.contentType = "text/xml";
news_xml.onLoad = function(success){
    if (success) ShowNews(this);
    else txt1.text = "Error loading XML file";
}

RefreshNews(news_xml);


var max_news_items = 5;
GetTitleText = function (news_xml, entry_index) {
    var entries = news_xml.firstChild.childNodes;
    var title_element = entries[entry_index].firstChild;
    return title_element.firstChild.nodeValue;
};
GetBodyText = function (news_xml, entry_index) {
    var entries = news_xml.firstChild.childNodes;
    var body_element = entries[entry_index].firstChild.nextSibling;
    return body_element.firstChild.nodeValue;
};
GetEntry = function (news_xml, index) {
    var entries = news_xml.firstChild.childNodes;
    return entries[index];
};
GetNewsCount = function (news_xml) {
    var entries = news_xml.firstChild.childNodes;
    return entries.length;
};
ShowNews = function (news_xml) {
    if (!news_xml.firstChild.hasChildNodes()) {
        txt1.text = "No news available.";
        return (0);
    }
    var entries = news_xml.firstChild.childNodes;
    txt1.text = "";
    for (var i = 0; i<entries.length; i++) {
        var title = GetTitleText(news_xml, i);
        var body = GetBodyText(news_xml, i);
        txt1.htmlText += "<b>"+title+"</b><br>";
        txt1.htmlText += entries[i].attributes.date+"<br>";
        txt1.htmlText += "???????????????????????????????<br>";
        txt1.htmlText += body+"<br><br>";
    }
};


RefreshNews = function (news_xml) {
    content_txt.htmlText = "<i>Loading...</i>";
    news_xml.load(xml_file+"?"+new Date().getTime());
};
Avatar billede barklund Nybegynder
22. februar 2005 - 15:12 #6
Hvor gjorde du af den funktion, jeg skrev? Du har jo bare slettet det meste igen?

var xml_file = "readwrite/news.xml";
var news_xml = new XML();
news_xml.ignoreWhite = true;
news_xml.onLoad = function(success){
    if (success) ShowNews(this);
    else txt1.text = "Error loading XML file";
}
RefreshNews(news_xml);
var max_news_items = 5;
GetData = function(entry) {
    var o = new Object();
    o.date = entry.attributes.date;
    o.title= entry.childNodes[0].nodeValue;
    o.sted = entry.childNodes[1].nodeValue;
    o.body = entry.childNodes[2].nodeValue;
}
ShowNews = function (news_xml) {
    if (!news_xml.firstChild.hasChildNodes()) {
        txt1.text = "Ingen koncerter i kalenderen ...";
        return (0);
    }
    var entries = news_xml.firstChild.childNodes;
    txt1.txt.text = "";
    for (var i = 0; i<entries.length; i++) {
        var entry = GetData(entries[i]);
        txt1.htmlText += entry.date+"<br>";
        txt1.htmlText += entry.title+"<br><br>";
        txt1.htmlText += entry.body+"<br><br>";
        txt1.htmlText += entry.sted+"<br><br>";
        txt1.htmlText += "_______________________________<br>";
    }
};
RefreshNews = function (news_xml) {
    content_txt.htmlText = "<i>Loading...</i>";
    news_xml.load(xml_file+"?"+new Date().getTime());
};

Så skulle den nogenlunde være der.

--
Morten Barklund
Avatar billede oersted Novice
22. februar 2005 - 15:25 #7
jeg ved ikke hvorfor - men der sker intet - den viser ikke engang "Error loading XML file"
Avatar billede barklund Nybegynder
22. februar 2005 - 19:41 #8
Du skal definere funktionerne sædvanligt for at du kan kalde dem før du har skrevet dem:

var xml_file = "readwrite/news.xml";
var news_xml = new XML();
news_xml.ignoreWhite = true;
news_xml.onLoad = function(success){
    if (success) ShowNews(this);
    else txt1.text = "Error loading XML file";
}
RefreshNews(news_xml);
var max_news_items = 5;
function GetData(entry) {
    var o = new Object();
    o.date = entry.attributes.date;
    o.title= entry.childNodes[0].nodeValue;
    o.sted = entry.childNodes[1].nodeValue;
    o.body = entry.childNodes[2].nodeValue;
}
function ShowNews(news_xml) {
    if (!news_xml.firstChild.hasChildNodes()) {
        txt1.text = "Ingen koncerter i kalenderen ...";
        return (0);
    }
    var entries = news_xml.firstChild.childNodes;
    txt1.txt.text = "";
    for (var i = 0; i<entries.length; i++) {
        var entry = GetData(entries[i]);
        txt1.htmlText += entry.date+"<br>";
        txt1.htmlText += entry.title+"<br><br>";
        txt1.htmlText += entry.body+"<br><br>";
        txt1.htmlText += entry.sted+"<br><br>";
        txt1.htmlText += "_______________________________<br>";
    }
}
function RefreshNews(news_xml) {
    content_txt.htmlText = "<i>Loading...</i>";
    news_xml.load(xml_file+"?"+new Date().getTime());
}

Prøv den ;)

--
Morten Barklund
Avatar billede oersted Novice
22. februar 2005 - 19:49 #9
interessant - nu loader den:










_______________________________







_______________________________







_______________________________







_______________________________
Avatar billede oersted Novice
22. februar 2005 - 19:49 #10
ja, undskyld jeg bruger så meget plads :-)
Avatar billede barklund Nybegynder
22. februar 2005 - 20:17 #11
Ret lige til:

function GetData(entry) {
    var o = new Object();
    o.date = entry.attributes.date;
    o.title= entry.childNodes[0].nodeValue;
    o.sted = entry.childNodes[1].nodeValue;
    o.body = entry.childNodes[2].nodeValue;
    return o;
}

Altså, jeg havde jo glemt at returnere objektet :)

--
Morten Barklund
Avatar billede oersted Novice
22. februar 2005 - 20:26 #12
returnerer:

her står dato _1
null

null

null

_______________________________
her står dato nr 2
null

:-(
Avatar billede barklund Nybegynder
22. februar 2005 - 20:30 #13
Ih, så retter jeg det da lidt så det er korrekt:

function GetData(entry) {
    var o = new Object();
    o.date = entry.attributes.date;
    o.title= entry.childNodes[0].firstChild.nodeValue;
    o.sted = entry.childNodes[1].firstChild.nodeValue;
    o.body = entry.childNodes[2].firstChild.nodeValue;
    return o;
}

Jeg sidder jo ikke og tester - skriver bare lige ud i luften :)

--
Morten Barklund
Avatar billede oersted Novice
22. februar 2005 - 20:38 #14
det gør du så til gengæld rimeligt godt, må jeg sige:


her står dato _1
min titel 1

Program:  bla bla bla nummer 1

sted 1

_______________________________
her står dato nr 2

osv


... men hvorfor den returnerer body (program) før sted ved jeg ikke
Avatar billede barklund Nybegynder
22. februar 2005 - 20:45 #15
I disse linjer:

        txt1.htmlText += entry.title+"<br><br>";
        txt1.htmlText += entry.body+"<br><br>";
        txt1.htmlText += entry.sted+"<br><br>";

Angives rækkefølgen. Skal body komme efter sted, så flytter du den bare nedenunder :)

--
Morten Barklund
Avatar billede oersted Novice
22. februar 2005 - 20:51 #16
pinligst

jeg kiggede længe oppe

tusind tak for hjælpen, Morten

ikke mindst for at have kogt koden ned til noget jeg ..måske ... kan arbejde videre med
detteher kan i hvertfald bruge

du må gerne smide et "svar"
Avatar billede barklund Nybegynder
22. februar 2005 - 20:53 #17
No problemo :)
Avatar billede oersted Novice
22. februar 2005 - 20:59 #18
barklund har du en ICQ eller msn / mail adresse - jeg har en forespørgsel til dig
Avatar billede barklund Nybegynder
22. februar 2005 - 21:15 #19
ICQ: #85477233
MSN: mbarklund@hotmail.com
Web: http://actionscript.dk

Derudover laver jeg dog overhovedet ikke freelance-opgaver, om det er spørgsmålet :)
Avatar billede barklund Nybegynder
22. februar 2005 - 21:15 #20
Og tark for points :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester