Class rdfparser (class de lecture de flux rss/rdf 1.0)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 214 fois - Téléchargée 27 fois

Contenu du snippet

hello voici une class qui permet d'analyser un flux rss 2.0
Elle ne charge pas le flux, vous devez lui fournir un object XML lors de l'initialisation.

var x:XML = new XML();
x.ignoreWhites = true;
x.load("http://fluxrss1.0");
x.onLoad = function() {
var rdf = new rdfParser(x);
}

La methode rdfInfo() retourn un objet {title, link, description} qui decrit le flux rss.

la methode parse() permet de parser le fichier, et de stoquer les infos dans un array. la methode retourne true quand elle a fini.

la methode getValue() permet de recuperer l'array créé par parse().
Chaque item de cet array est un object {titre, description, link, source}.

Source / Exemple :


// rdfParser.as
//
// @author: BlackWizzard
// @description: analyse un flux rss 1.0 (rdf)
class rdfParser {
	public var xmlFile:String;
	public var x:XML;
	public var nObject:Object;
	public var nArray:Array;
	//
	function rdfParser(xml:String) {
		System.useCodepage = true;
		nObject = new Object();
		nArray = new Array();
		x = new XML();
		x.ignoreWhite = true;
		x.parseXML(xml);
		parse();
	}
	//
	function rssInfo() {
		var tmpO:Object = new Object();
		tmpO.title = getValueByRef(x.childNodes[0].childNodes[0], "title");
		tmpO.link = getValueByRef(x.childNodes[0].childNodes[0], "link");
		tmpO.description = getValueByRef(x.childNodes[0].childNodes[0], "description");
		return tmpO;
	}
	//
	function parse() {
		var i:Number = 1;
		while (x.childNodes[0].childNodes[i] != undefined) {
			var tmpO:Object = new Object();
			tmpO.titre = getValueByRef(x.childNodes[0].childNodes[i], "title");
			tmpO.description = ereg_replace(getValueByRef(x.childNodes[0].childNodes[i], "description"), "\n", "");
			tmpO.description = ereg_replace(tmpO.description, "a>", "a>");
			tmpO.description = ereg_replace(tmpO.description, "<a", "<a");
			tmpO.description = ereg_replace(tmpO.description, "u>", "u>");
			tmpO.description = ereg_replace(tmpO.description, "<u", "<u");
			tmpO.description = ereg_replace(tmpO.description, "i>", "i>");
			tmpO.description = ereg_replace(tmpO.description, "<i", "<i");
			tmpO.description = ereg_replace(tmpO.description, "b>", "b>");
			tmpO.description = ereg_replace(tmpO.description, "<b", "<b");
			tmpO.description = ereg_replace(tmpO.description, "img>", "img>");
			tmpO.description = ereg_replace(tmpO.description, "<img", "<img");
			tmpO.description = ereg_replace(tmpO.description, "&apos;", "'");
			tmpO.description = ereg_replace(tmpO.description, "&quot;", "\"");
			tmpO.link = getValueByRef(x.childNodes[0].childNodes[i], "link");
			tmpO.source = getValueByRef(x.childNodes[0].childNodes[i], "source");
			nArray.push(tmpO);
			i++;
		}
		return true;
	}
	//
	function getValueByRef(xm:XML, s:String) {
		var i:Number = 0;
		while (xm.childNodes[i] != undefined) {
			if (xm.childNodes[i].nodeName == s) {
				return (xm.childNodes[i].childNodes[0].toString());
			}
			i++;
		}
		return "";
	}
	//
	function getNodeNumberByRef(xm:XML, s:String) {
		var i:Number = 0;
		while (xm.childNodes[i] != undefined) {
			if (xm.childNodes[i].nodeName == s) {
				return i;
			}
			i++;
		}
		return -1;
	}
	//
	function getValue():Object {
		return nArray;
	}
	//
	function isLoaded() {
		if (x.getBytesLoaded() == x.getBytesTotal()) {
			return 100;
		} else {
			return x.getBytesLoaded()/x.getBytesTotal()*100;
		}
	}
	//
	function ereg_replace(s, str, rep, chr) {
		var t = (chr<0) ? s.substr(chr) : s.substr(0, chr);
		var s = str.length;
		var r = rep.length;
		var p = t.indexOf(str);
		while (p != -1) {
			t = t.substr(0, p)+rep+t.substr(p+s);
			p = t.indexOf(str, p+r);
		}
		return (chr) ? (chr<0) ? s.substr(0, s.length+chr)+t : t+s.substr(chr) : t;
	}
}

A voir également

Ajouter un commentaire

Commentaires

superchinois69
Messages postés
5
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
21 juin 2010
-
Salut j'arrive quelques années en retard ^^
j'essaye d'apprendre, mais je trouve pas de sources pour importer correctement un flux Rss dans un site flash...

J'ai réussi à importer le fichier xml, il s'affiche dans ma zone de texte, mais c'est tout en vrac, à cause des liens et autre fonctions...
Est ce qu'on peut importer uniquement TITRE /TXT / IMG (eventuellement lien...)

Si quelqu'un peu me dépanner, merci beaucoup

(je peux éventuellement uploader ce que j'ai fait, mais c'est juste un // load("http:// __ feed.xml");
cs_tom
Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009
-
On ne peut pas leur en vouloir. codes source est enorme, et sa gestion est en consequence...
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2 -
les admins en chef sont debordés...
g demandé d'ajouter la categorie "class" sur flashkod, deja ça c trop long apparement...
codes-sources part en couille...
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Putain oui !
Qu on fasse le PREMIER oui en Flash qui parle de Flash.. ! Pourquoi cela ne se fait pas si tant de personne le souhaite ???
cs_tom
Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009
-
ah ca je sais, ca fait un bail que j'ai laissé tomber toute sugestion pour du flash dans CS... Pourtant, je suis convaincu qu'on pourrait faire qquechose de vraiment rapide, stable, ergonomique, mais bon...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.