⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listparser.as

📁 FLASH 个人主页代码
💻 AS
字号:
/**
* Parses 1-level or 2-level deep simple XML lists.
*
* @author	Jeroen Wijering
* @version	1.3
**/


class com.jeroenwijering.utils.ListParser {


	/** URL of the xml file to parse. **/
	private var parseURL:String;
	/** The array the XML is parsed into **/
	public var parseArray:Array; 
	/** Flash XML object the file is loaded into. **/
	private var parseXML:XML;
	/** Switch for numeric or associative 1-level array **/
	private var isNumeric:Boolean = false;


	/** Constructor. **/
	function ListParser() {};


	/** 
	* Parse an XML list.
	*
	* @param url	URL of the playlist that should be parsed.
	**/
	public function parse(url:String):Void {
		var ref = this;
		parseURL = url;
		parseArray = new Array();
		parseXML = new XML();
		parseXML.ignoreWhite = true;
		parseXML.onLoad = function(success:Boolean) {
			if(success) { ref.parseList(); } 
			else { parseArray.push( {title:"Feed not found: "+ref.parseURL}); }
			parseArray.length == 0 ? parseArray.push({title:"Empty feed: "+ref.parseURL}): null;
			delete ref.parseXML;
			ref.onParseComplete();
		};
		if(_root._url.indexOf("file://") > -1) { parseXML.load(parseURL); } 
		else if(parseURL.indexOf('?') > -1) { parseXML.load(parseURL+'&'+random(999)); } 
		else { parseXML.load(parseURL+'?'+random(999)); }
	};


	/** Covert general XML list to array. **/
	private function parseList():Void {
		if(parseXML.firstChild.childNodes[0].nodeName == parseXML.firstChild.childNodes[1].nodeName) {
			isNumeric = true;
		}
		for(var i=0; i<parseXML.firstChild.childNodes.length; i++) {
			var itm = parseXML.firstChild.childNodes[i];
			if(itm.firstChild.nodeName == null) {
				if(isNumeric == true) {
					parseArray.push(itm.firstChild.nodeValue);
				} else {
					parseArray[itm.nodeName] = itm.firstChild.nodeValue;
				}
			} else {
				parseArray[i] = new Object();
				for(var j=0; j<itm.childNodes.length; j++) {
					if(isNaN(itm.childNodes[j].firstChild.nodeValue)){ 
						parseArray[i][itm.childNodes[j].nodeName] = itm.childNodes[j].firstChild.nodeValue;
					} else { 
						parseArray[i][itm.childNodes[j].nodeName] = Number(itm.childNodes[j].firstChild.nodeValue);
					}
				}
			}
		} 
	};


	/** Invoked when parsing is completed. **/
	public function onParseComplete() { };


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -