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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Значит так, нашел я в хелпе xml на 4 метра, наблюдал то же самое - скрипт вылетает, то есть одним куском флеш такое не парсит. Тогда я разбил этот xml на куски строк по 50 -100 блоками CDATA, получил xml такого вида:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<book title="Components Language Reference" directory="ComponentRef">
<![CDATA[<book>
... тут строк 50 ...
</book>]]>
<![CDATA[<book>
... тут строк 100 ...
</book>]]>
</book>
Всего около 1500 строк.
И написал такое:
Код:
var myX:XML = new XML();
myX.ignoreWhite = true;
var finX:XML = new XML('<xml/>');
var intervalID:Number;
var i = 1;

myX.onLoad = function (ok){
    trace (ok + " " + this.status);
    clearInterval(intervalID);
    var node = this.firstChild.firstChild;
    onEnterFrame = function ()    {
        parseXMLPart(node);
    };
};
function parseXMLPart(node){
    trace (i++);
    delete onEnterFrame;
    txt.text = node.toString();
    var tempX = new XML(node.nodeValue);
    var currNode = tempX.firstChild.firstChild;
    while(currNode !=null){
      finX.firstChild.appendChild(currNode);
      currNode = currNode.nextSibling;
    }
    delete currNode;
    delete tempX;
    node = node.nextSibling;
    if (node != null)    {
        onEnterFrame = function (){
            parseXMLPart(node);
        };
    }else{
        delete myX;
        trace(finX);
        txt.text = finX.toString();
    }
}
function checkProgress(xmlObj:XML):Void {
    var bytesLoaded:Number = xmlObj.getBytesLoaded();
    var bytesTotal:Number = xmlObj.getBytesTotal() || 10000000;
    var percentLoaded:Number = Math.floor(((bytesLoaded || .01) / bytesTotal ) * 100);
    txt.text = "percent loaded: " + percentLoaded;
}
myX.load('test.xml');
intervalID = setInterval(checkProgress, 100, myX);
И все отлично прощелкалось
Код конечно сыроват, расчитан на xml определенной структуры..

Встроенный debug не стоит делать с xml такого размера - флеш гарантировано вылетит. Только самописный.


Последний раз редактировалось Kikasso; 12.09.2007 в 00:52.