Показать сообщение отдельно
Старый 26.08.2011, 23:21
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 9  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
вот еще.
по поводу обращения по имени - я когда то давно писал класс один для этого дела. если разберетесь как им пользоваться, то на здоровье:

Код AS1/AS2:
class XML2Array {
 
	static public var COMPLETE:Number = 0;
	static public var ERROR:Number = 1;
 
	private var onComplete:Function;
	private var onError:Function;
 
	private var xml:XML;
	private var sorting:Boolean;
 
	public function XML2Array($sorting:Boolean) {
		sorting = $sorting;
	}
 
	public function load(str:String) {
		var t:XML2Array = this;
 
		xml = new XML();
		xml.ignoreWhite = true;
		xml.onLoad = function(ok:Boolean):Void {
			if (ok) {
				if (this.status) {
					t.onError('Неправильный формат данных (' + this.status + ')');
				}else {
					t.onComplete(t.parseXML(this));
				}
			}else {
				t.onError('Файл не найден');
			}
		}
		xml.load(str);
	}
 
	public function convert(str:String) {
		xml = new XML(str);
		xml.ignoreWhite = true;
		if (xml.status) {
			onError('Неправильный формат данных (' + xml.status + ')');
		}else {
			onComplete(parseXML(xml));
		}
	}
 
	public function addEventListener(p_event:Number, p_function:Function):Void {
 
		switch (p_event) {
			case XML2Array.COMPLETE:
				this.onComplete = p_function;
				break;
			case XML2Array.ERROR:
				this.onError = p_function;
				break;
			default:
				break;
		}
 
	}
 
	private function parseXML(p_xml:XML):Array {
 
		var arr:Array = [];
 
		// parse attributes
		for (var p:String in p_xml.attributes) {
			arr[p] = p_xml.attributes[p];
		}
 
		// parse nodeValue
		var nv:String = p_xml.childNodes[0].nodeValue;
		if (nv != undefined && nv != null){
			arr.value = nv;
		}
 
		// parse childs
		var nameArr:Array = [];
		for (var i:Number = 0; i < p_xml.childNodes.length; i++ ) {
			nameArr.push(p_xml.childNodes[i].nodeName);
		}
		for (var i:Number = 0; i < p_xml.childNodes.length; i++ ) {
			if (p_xml.childNodes[i].nodeName != null) {
				if (isUnique(nameArr, p_xml.childNodes[i].nodeName)){
					arr[p_xml.childNodes[i].nodeName] = parseXML(p_xml.childNodes[i]);
				}else {
					if (arr[p_xml.childNodes[i].nodeName] == undefined) {
						arr[p_xml.childNodes[i].nodeName] = [];
					}
					var idArr:Array = parseXML(p_xml.childNodes[i]);
					// сортировка по id
					if (!sorting) { /*if (isNaN(idArr.id)){*/
						arr[p_xml.childNodes[i].nodeName].push(idArr);
					}else{
						arr[p_xml.childNodes[i].nodeName][Number(idArr.id)] = idArr;
					}
				}
			}
		}
		return arr;
 
	}
 
	private function isUnique(p_arr:Array, p_str:Object):Boolean {
		var c:Number = 0;
		for (var i:Number = 0; i < p_arr.length; i++ ) {
			if (p_arr[i].toString() == p_str.toString()) {
				c++;
				if (c > 1) {
					return false;
				};
			}
		}
		return (c == 1);
	}
}
__________________
сайт, vk