Цитата:
Сообщение от 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
