Volledige versie bekijken : Atom XML count entries
wikke
%Europe/Berlin %612 %2010, 15:41
ik heb een atom xml ingeladen in feedXML.
nu wil ik tellen hoeveel "entry" er zijn. Dit doe ik via
var u:int = feedXml.child("entry").length();
maar dat geeft altijd 0.
Als ik dit doe bij een andere xml die ik zelf heb gemaakt werkt het wel.
de xml waarmee ik het probeer http://www.deredactie.be/cm/vrtnieuws?mode=atom
cornedor
%Europe/Berlin %684 %2010, 17:26
word de xml ook echt ingeladen of krijg je sandbox security error?
wikke
%Europe/Berlin %702 %2010, 17:51
de xml wordt ingeladen. En als ik in de debugger kijk kan ik hem helemaal doorlezen en zie ik de letterlijk "entry" staan. Daarom snap ik niet waarom het niet werkt
cornedor
%Europe/Berlin %929 %2010, 23:19
wat gebreurt er als je dit doet:
trace(feedXml.entry.length());
wikke
%Europe/Berlin %499 %2010, 12:59
wat gebreurt er als je dit doet:
trace(feedXml.entry.length());
geeft 0
cornedor
%Europe/Berlin %689 %2010, 17:32
kun je misschien de rest van het script hier ook even neerzetten
wikke
%Europe/Berlin %819 %2010, 20:40
De code is niet heel overzichtelijk. Het is de eerste keer dat ik een groter flash project maak
import fl.transitions.Tween;
import fl.transitions.easing.*;
//XML loaden
var myURL:URLRequest = new URLRequest("XML/nimbo.xml");
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, loadXML);
var myXMLData:XML;
urlLoader.load(myURL);
var i:int;
function loadXML(evt:Event)
{
myXMLData = new XML(evt.target.data);
var u:int = myXMLData.child("category").length();
for(i=0; i<u; i++)
{
loadCategory();
}
}
var xPos:int = 530;
var yPos:int = 20;
function loadCategory()
{
var categoryBlad:Blad = new Blad();
categoryBlad.lblTitle.text = myXMLData.category[i].attribute("name");
categoryBlad.x = xPos;
categoryBlad.y = yPos;
categoryBlad.addEventListener(MouseEvent.CLICK, showCategory);
addChild(categoryBlad);
xPos += 125;
if(i==3)
{
xPos = 530;
yPos = 80;
}
}
var categoryItem:Blad;
var k:int;
var c:int;
var container:Sprite = new Sprite();
var containerCategory:Sprite = new Sprite();
addChild(container);
function showCategory(evt:MouseEvent)
{
var downPos:int = 60;
while(container.numChildren>0)
{
container.removeChildAt(container.numChildren - 1);
}
var target:String = evt.currentTarget.lblTitle.text;
for (k = 0; k < myXMLData.child("category").length(); k++)
{
var compare:String = myXMLData.category[k].attribute("name");
if(target == compare)
{
for(c = 0; c < myXMLData.category[k].child("channel").length(); c++)
{
categoryItem = new Blad();
categoryItem.width = 60;
categoryItem.height = 32;
categoryItem.x = evt.currentTarget.x;
categoryItem.lblTitle.text = myXMLData.category[k].channel[c].name;
categoryItem.lblURL.text = myXMLData.category[k].channel[c].url;
categoryItem.addEventListener(MouseEvent.CLICK, loadFeeds);
container.addChild(categoryItem);
var myTween:Tween = new Tween(categoryItem, "y", Regular.easeInOut, evt.currentTarget.y ,(evt.currentTarget.y + downPos), 1, true);
downPos += 40;
}
}
}
}
var feedXml:XML;
function loadFeeds(evt:Event)
{
var feedUrl:URLRequest = new URLRequest(evt.currentTarget.lblURL.text);
var feedLoader:URLLoader = new URLLoader();
feedLoader.addEventListener(Event.COMPLETE, fillXML);
feedLoader.load(feedUrl);
}
var g:int;
function fillXML(evt:Event)
{
feedXml = new XML(evt.target.data);
var u:int = feedXml.child("entry").length();
trace(feedXml.child("feed").length());
for(g = 0; g < u; g++)
{
showFeeds();
}
}
function showFeeds()
{
categoryItem = new Blad();
categoryItem.x = Math.random()*100;
categoryItem.y = Math.random()*100;
addChild(categoryItem);
}
cornedor
%Europe/Berlin %915 %2010, 22:58
ik denk dat het probleem voor het grootste deel bij de opmaak van de feed ligt.
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("http://twitter.com/statuses/user_timeline/25842067.rss"));
function LoadXML(e:Event):void {
xmlData = new XML(e.target.data);
ParseXML(xmlData);
}
function ParseXML(dataInput:XML):void {
trace("XML Output");
trace("------------------------");
trace(dataInput);
trace("dataInput.channel.item.length()");
trace("------------------------");
trace(dataInput.channel.item.length());
}
als ik
xmlLoader.load(new URLRequest("http://twitter.com/statuses/user_timeline/25842067.rss"));
gebruik krijg ik bij de laatste trace 20 als ik http://www.deredactie.be/cm/vrtnieuws?mode=atom gebruik en ik trace(dataInput.entry.length()) of trace(dataInput.feed.entry.length()) krijg ik 0
wikke
%Europe/Berlin %630 %2010, 16:08
Nu heb ik gevonden dat je voor ATOM feeds te kunnen lezen in flash dat je http://code.google.com/p/as3syndicationlib/ en http://code.google.com/p/as3corelib/ moet toevoegen. Nu weet ik niet waar ik die bestanden moet plaatsen zodat ik ze kan aanspreken in flash. Ik heb ze gedownload maar kan dus nu niet verder.
(Ik werk met windows 7)
cornedor
%Europe/Berlin %640 %2010, 16:22
Unpack SWC-files to C:\Documents and Settings\{username}\Local Settings\Application Data\Adobe\Flash CS3\en\Configuration\Components\
dan flash starten: Window -> Components
wikke
%Europe/Berlin %659 %2010, 16:50
as3corelib kan ik zo invoegen en zien bij mijn components maar de syndication niet
cornedor
%Europe/Berlin %855 %2010, 21:31
je kunt ook de classes importeren die hier staan: svn checkout http://as3syndicationlib.googlecode.com/svn/trunk/ as3syndicationlib-read-only
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.