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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 192 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

cs_TomQuick
Messages postés
119
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
11 juillet 2006
-
Je comprend rien au code mais c'est génial alors je te met un 10/10 !
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2 -
mdr!
si j'ai le tps, j'ecrirai des cours sur l'as2.. mais pas avant les vacances d'été :p
cs_TomQuick
Messages postés
119
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
11 juillet 2006
-
Super !!!
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Moi ce que je ne sais pas ce que sais, c est : "flux rss1.0"... Si quelqu'un pouvait m'expliquer ca serait cool ! La source cava.. Mais son but ... Pff !

Merci = )
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2 -

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.