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

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

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.