Форум 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 и ignoreWhite (http://www.flasher.ru/forum/showthread.php?t=118163)

zzz_dmg 16.11.2008 20:10

xml и ignoreWhite
 
доброго времени суток. имеется файл хмл.
Код:

<photos>
        <photo>
                <pathToLarge>i2/bhambi.jpg</pathToLarge>
                <pathToSmall>i2/bhambi_sm.jpg</pathToSmall>
                <client>Bhambi</client>
                <URL>http://bhambi.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>php</item>
                        <item>.NET</item>
                </technologies>
                <readMoreLink>link1</readMoreLink>
        </photo>
...
</photos>

и флеш. когда отсутствует фраза dataXML.ignoreWhite = true; загрузка картинок происходит, но длина массива не считается (выдает 0). когда эта фраза есть, то длина массива считается, но не происходит загрузка картинок (выдает undefined).
Код:

var url:String = "materials2.xml";
dataXML = new XML();
dataXML.ignoreWhite = true;
dataXML.onLoad = loadData;
dataXML.load(url);

function loadData(){
        var photos = dataXML.firstChild;
        max = photos.childNodes.length;       
        trace (max);


        var temp = 1;
        _root.allWorksLinks = this.childNodes[1].childNodes[7].firstChild.toString();
       
        for(var i=0;i<9;i++){
                var temp1 = 1;
                var index = 0;
                _root.lagePics[i] = this.childNodes[1].childNodes[temp].childNodes[1].firstChild.toString();
                _root.smallPics[i] = this.childNodes[1].childNodes[temp].childNodes[3].firstChild.toString();
                _root.client[i] = this.childNodes[1].childNodes[temp].childNodes[5].firstChild.toString();
                _root.path[i] = this.childNodes[1].childNodes[temp].childNodes[7].firstChild.toString();
                _root.readMoreLinks[i] = this.childNodes[1].childNodes[temp].childNodes[11].firstChild.toString();
                while(this.childNodes[1].childNodes[temp].childNodes[9].childNodes[temp1].firstChild.toString() != undefined){
                        if(this.childNodes[1].childNodes[temp].childNodes[9].childNodes[temp1].firstChild.toString() != undefined){
                                ...
                        temp1 += 2;
                        index += 1;
                }
                temp += 2;
        }
        _root.loadFirst();
}

что здесь не так

Avtorpc 16.11.2008 21:15

При анализе скрипта не совсем понял ссылки на root(типа _root.allWorksLinks=...) Это что за объекты? И если можно распишете порядок разборки файла .xml, так будет проще найти ошибку.

zzz_dmg 16.11.2008 23:54

вот весь хмл
Код:

<?xml version="1.0" encoding="iso-8859-1"?>
<photos>
        <photo>
                <pathToLarge>i2/bhambi.jpg</pathToLarge>
                <pathToSmall>i2/bhambi_sm.jpg</pathToSmall>
                <client>Bhambi</client>
                <URL>http://bhambi.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>php</item>
                        <item>.NET</item>
                </technologies>
                <readMoreLink>link1</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/denver.jpg</pathToLarge>
                <pathToSmall>i2/denver_sm.jpg</pathToSmall>
                <client>Denver</client>
                <URL>http://denvervip.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>css</item>
                        <item>flash</item>
                </technologies>
                <readMoreLink>link2</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/efrat.jpg</pathToLarge>
                <pathToSmall>i2/efrat_sm.jpg</pathToSmall>
                <client>Efrat</client>
                <URL>http://efrat-k.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link3</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/gipo.jpg</pathToLarge>
                <pathToSmall>i2/gipo_sm.jpg</pathToSmall>
                <client>Gipo</client>
                <URL>http://gipo.by/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link4</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/neatnails.jpg</pathToLarge>
                <pathToSmall>i2/neatnails_sm.jpg</pathToSmall>
                <client>Neatnails</client>
                <URL>http://neatnails.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link5</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/ruflex.jpg</pathToLarge>
                <pathToSmall>i2/ruflex_sm.jpg</pathToSmall>
                <client>Ruflex</client>
                <URL>http://ruflex.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link6</readMoreLink>
        </photo>
       
        <photo>
                <pathToLarge>i2/rusreg.jpg</pathToLarge>
                <pathToSmall>i2/rusreg_sm.jpg</pathToSmall>
                <client>Rusreg</client>
                <URL>http://rusreg.ru/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link7</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/wingshooting.jpg</pathToLarge>
                <pathToSmall>i2/wingshooting_sm.jpg</pathToSmall>
                <client>Wingshooting</client>
                <URL>http://wingshooting.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link8</readMoreLink>
        </photo>
        <photo>
                <pathToLarge>i2/yakova.jpg</pathToLarge>
                <pathToSmall>i2/yakova_sm.jpg</pathToSmall>
                <client>Yakova</client>
                <URL>http://yakova.com/</URL>
                <technologies>
                        <item>html</item>
                        <item>flash</item>
                        <item>ASP.NET</item>
                </technologies>
                <readMoreLink>link9</readMoreLink>
        </photo>
       
        <allWorksLink>http://google.com/</allWorksLink>
</photos>


INK• 17.11.2008 00:55

если не вдаватся в подробности:
без ignoreWhite у тебя firstChild - это перенос каретки, который ясен пень никакой длинны не имеет. Это баг еще 5го плеера, я чуть сума не сошел, в свое время, пока не понял откуда там ноги растут.

Так вот. не грузятся видно потому что там не в то место ты смотришь...

вместо хачить твой код, предлагаю воспользоватся моим.
смотри
http://ruslanshestopal.com/docs/rss_...ash_reader.php

код будет всего лишь такой
Код AS1/AS2:

var url:String = "materials2.xml";
import XMI;
var my_xml:XMI = new XMI();
my_xml.addListener(this);
my_xml.load(url);
//
this.onXMLLoad = function(xml_obj:Object, xmi_instance:XMI) {
 
        var items_length:Number = xml_obj.photo.length;
        trace("my_xml loaded:"+items_length);
        for (var i = 0; i<items_length; i++) {
                var big_img = xml_obj.photo[i].pathToLarge;
                var small_img = xml_obj.photo[i].pathToSmall;
                var tech_arr = xml_obj.photo[i].technologies.item;
                trace("big image:"+big_img+" small image:"+small_img);
                trace("Technologies ->>"+tech_arr);
        }
};
this.onLoadFailure = function() {
        trace("fail to load");
};


Wolsh 17.11.2008 01:14

Код AS1/AS2:

... = this.childNodes[1]...

А где Вы видели у документа XML еще какой-то нод, кроме нулевого? Ну не считая комментариев и прочих служебных, которые мы не обрабатываем?

zzz_dmg 17.11.2008 15:15

все равно. если записываю так, но присутствует dataXML.ignoreWhite = true; не находит путь к форо и сама длина undefined. а если эту строчку удаляю, то длин а рана 21 (вместо положенного 10)
Код:

var len = this.childNodes[1].childNodes.length;
        trace (len);


Wolsh 17.11.2008 15:58

Вы не поняли. Нет никакого this.childNodes[1] и быть не может, по крайней мере если ignoreWhite = true. (А оно должно быть тру обязательно)
У документа есть только ОДИН нод - this.childNodes[0] он же this.firstChild.
Вы просто не понимаете, что this здесь - это сам загруженный XML, весь. this - это не <photos>. И у this есть только один нулевой нод - <photos>, больше нет в принципе. Т.е. childNodes[1] нет вообще, а Вы весь код к нему обращаетесь.
Откуда берется childNodes[1] при отключенном игнорировании - Вам INK• объяснил.
Пробел или перенос становится нулевым нодом, а <photos> - первым. Только не пытайтесь это использовать)))))) С отключенным игнорированием Вы никогда корректную разборку не сделаете, и не надо. Поэтому пожалуйста, перестаньте играть со строчкой во вкл/выкл и сконцентрируйтесь на том, что Вы подразумевали под this.
Переносы становятся нодами - отсюда такая длина.

INK• 17.11.2008 18:33

Цитата:

Сообщение от zzz_dmg (Сообщение 777617)
а если эту строчку удаляю, то длин а рана 21 (вместо положенного 10)

ну раз ты до этого места уже дошел.
то вот в этом то и кроится разгадка (n-1)/2 !
тоесть явно что то лишнее. Так вот это лишнее и есть переносы.

было [0] стало [1]
Тоесть сместилось из за того что переносы тоже учитываются.


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

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