Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Парсинг XML (http://www.flasher.ru/forum/showthread.php?t=104049)

RSovets 17.11.2007 12:30

Парсинг XML
 
Помогите пожалуйста разобраться, у меня есть xml файл такого вида
Код:

<images>
<pic>
<image>http://www.olgakataeva.com/maxiXML.php?adr=stream.jpg</image>
<full>http://www.olgakataeva.com/bol/stream.jpg</full>
<small>http://www.olgakataeva.com/mal/stream.jpg</small>
<caption>a stream</caption>
<descrip>&Green stream</descrip>
</pic>
<pic>
<image>http://www.olgakataeva.com/maxiXML.php?adr=river.jpg</image>
<full>http://www.olgakataeva.com/bol/river.jpg</full>
<small>http://www.olgakataeva.com/mal/river.jpg</small>
<caption>a river</caption>
<descrip>&Mariy-El</descrip>
</pic>
</images>

делаю парс таким образом
Код:

my_xml.parseXML(my_xml)
trace(my_xml.status)
pos_txt.text = my_xml.status;
xmlNode = this.firstChild;
image = [];
small = [];
full = [];
description = [];
descrip = [];
total = xmlNode.childNodes.length;
trace(total);
for (i=0; i<total; i++) {
image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
full[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
small[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
description[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
descrip[i] = xmlNode.childNodes[i].childNodes[4].firstChild.nodeValue;
}

статус выдает - 0; значит сделал он все успешно, но вот как дальше... значение тотал выходит тоже равным 0 почему то, как и значения которые в цикле которые вообще undefined
как исправить?

Double 17.11.2007 14:53

какой ужас. человеком такая структура нечитаема.
Код:

<pic image="http://www.olgakataeva.com/maxiXML.php?adr=stream.jpg" full="http://www.olgakataeva.com/bol/stream.jpg" small="http://www.olgakataeva.com/mal/stream.jpg caption="a stream" descrip="&Green stream" />
в этом случае человеческий язык появится и в коде флеша
Код:

picNode.attributes.small
а так, рекомендую до парсинга сделать
Код:

trace(my_xml.toString());
может там и парсить-то нечего )))
и вот эта конструкция неясна
Код:

xmlNode = this.firstChild;
this в данном случае что?..

RSovets 17.11.2007 15:41

вместо this my_xml должен был быть

сделал так

Код:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
<pic image="http://www.olgakataeva.com/maxiXML.php?adr=stream.jpg" full="http://www.olgakataeva.com/bol/stream.jpg" small="http://www.olgakataeva.com/mal/stream.jpg" caption="a stream" descrip="&Green stream" />
<pic image="http://www.olgakataeva.com/maxiXML.php?adr=stream.jpg" full="http://www.olgakataeva.com/bol/stream.jpg" small="http://www.olgakataeva.com/mal/stream.jpg" caption="a stream" descrip="&Green stream" />
<pic image="http://www.olgakataeva.com/maxiXML.php?adr=stream.jpg" full="http://www.olgakataeva.com/bol/stream.jpg" small="http://www.olgakataeva.com/mal/stream.jpg" caption="a stream" descrip="&Green stream" />
</images>

и
Код:

my_xml.parseXML(my_xml);
trace(my_xml.toString());
picNode = my_xml.firstChild;
trace(picNode.attributes.small);

выводит сам текст хорошо, trace(picNode.attributes.small); выдает неизвестность :(
глупо себя ощущаю, но новичок ещё в этом увы :(

Double 17.11.2007 15:59

тэкс, а xml из файла чтоли загружаешь? или откуда он у тебя в my_xml берётся?..

RSovets 17.11.2007 16:03

вот полный код
Код:

my_xml = new XML()
my_xml.load("list_xml.xml")
my_xml.onLoad=function(success) {
        if(!success || this.status){
                  return this.customErrorHandler(this.status, success)
        }
        this.customParsingProcedure()
}
my_xml.customParsingProcedure = function (){
                my_xml.parseXML(my_xml);
                trace(my_xml.toString());
                picNode = my_xml.firstChild;
                trace(picNode.attributes.small);
}
my_xml.customErrorHandler = function (status, success){
trace("loaded: " + success +" valid: " + !this.status)
}


Double 17.11.2007 16:04

1. не надо его парсить.
2. ignoreWhite ему надо поставить.

RSovets 17.11.2007 16:10

подправил
Код:

my_xml.ignoreWhite = true;
trace(my_xml.toString());
picNode = my_xml.firstChild;
trace(picNode.attributes.small);

все равно

Double 17.11.2007 16:14

а ты протрейсь my_xml.firstChild.nodeName ))))

RSovets 17.11.2007 16:17

null :(
а как исправить?

Double 17.11.2007 16:18

блин, выложи оба файла.


Часовой пояс GMT +4, время: 21:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.