Показать сообщение отдельно
Старый 06.01.2009, 05:40
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 14  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от DrSmyrke Посмотреть сообщение
вот еще один вопросик по теме, стырил я XML с гисметео, вот токо не могу разобраться в нем.
пробовал по разному но все равно ничего не пишет в текстовое поле, что делать? памагите, плиз! Заранее СПС
Вот вам XML-парсер (делал в одном своём проекте), разбирает XML и создает на его основе объект с данными свойствами и значениями:
Код AS1/AS2:
// Variables
var XMLdata:XML;
var weatherObj:Object = new Object();
 
// Functions
function parseNodes(elem:XMLNode, hodeline:Object):Void {
        if (elem.nodeType == 1) {
            hodeline[elem.nodeName] = {};
            hodeline[elem.nodeName]['attributes'] = {};
            parseNodeAttributes(elem,hodeline[elem.nodeName]['attributes']);
        }
        if (elem.nodeType == 3) {
            parseNodeText(elem,hodeline);
        }
        if (elem.hasChildNodes) {
            parseNodes(elem.firstChild,hodeline[elem.nodeName]);
        }
        if (elem.nextSibling != null) {
            parseNodes(elem.nextSibling,hodeline);
        }
}
 
function parseNodeAttributes(elem:XMLNode, objectline:Object):Void {
        var n:Number;
        for (n in elem.attributes) {
            objectline[n] = elem.attributes[n];
        }
}
 
function parseNodeText(elem, objectParent:Object):Void {
        _root.createTextField("my_txt",1,100,100,300,100);
        _root.my_txt._visible = false;
        _root.my_txt.html = true;
        _root.my_txt.condenseWhite = true;
        _root.my_txt.htmlText = elem.nodeValue;
        if (_root.my_txt.htmlText.length <= 0) {
            elem.nodeValue = _root.my_txt.htmlText;
        }
        _root.my_txt.removeTextField();
        if (elem.nodeValue.length > 0) {
            objectParent['text'] = elem.nodeValue;
        }
}
 
// Execute
XMLdata = new XML(imported_xml_text); //imported_xml_text - любой текст в формате xml
XMLdata.ignoreWhite = true; //если не нужно, можно убрать эту строку
parseNodes(XMLdata.lastChild,weatherObj);
и после этого вам остается только обратиться к нужному свойству объекта weatherObj :
Код AS1/AS2:
var temp:Number = Number(weatherObj.MMWEATHER.REPORT.TOWN.FORECAST.TEMPERATURE.atributtes.max);
Когда парсер разбирает XML, он атрибуты тега пишет в свойство atributtes, а текст тега сохраняет в свойстве text. Т.е. чтобы добраться до направления ветра, нужно вот сюда обращаться WIND.atributtes.direction


Последний раз редактировалось RAlfDog; 06.01.2009 в 05:50.