Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   Xml (http://www.flasher.ru/forum/showthread.php?t=59778)

Linuxoid_Alex 24.06.2004 05:52

Xml
 
Люди, подскажите, plz, как в XML объявить данные, а затем вытащить их во Flashe?

Linuxoid_Alex 24.06.2004 07:07

Пишу во флэше
Код:

function ReadDataFromXML()
{
        doc = new XML();
        doc.load("diagram.xml");
        xmlElt=doc;
        i=0;
        j=0;
        colichestvo_parametrov=0;
        paramName = new Array();
        paramAttr = new Array();
        while (xmlElt!=null)
        {
                paramName[i]=xmlElt.nodeName;
                paramAttr[i]=xmlElt.attributes.value;
                pname=xmlElt.parentNode.nodeName;
                trace(pname);
                if (paramName[i]!=null)
                {
                        i++;
                }
                if (xmlElt.firstChild!=null)
                {
                        xmlElt=xmlElt.firstChild;
                        j++;
                }else
                {
                        if (xmlElt.nextSibling!=null)
                        {
                                xmlElt=xmlElt.nextSibling;
                        }else
                        {
                                xmlElt=xmlElt.parentNode;
                                xmlElt=xmlElt.nextSibling;
                                j--;
                        }
                }
        }
        colichestvo_parametrov=i;
        trace(i);
        for (i=0;i<=colichestvo_parametrov;i++)
        {
          trace(paramName[i]);
          trace(paramAttr[i]);
        }
}

XML файл:
Код:

<?xml version="1.0" encoding="utf-8" ?>
<diagrama>
  <stolbzi>
    <colvo value="2"></colvo>
    <stolbez0>
          <height value="100"></height>
          <width value="10"></width>
          <color value="0x000000"></color>
          <x value="10"></x>
          <y value="100"></y>
        </stolbez0>
        <stolbez1>
          <height value="80"></height>
          <width value="10"></width>
          <color value="0x000000"></color>
          <x value="30"></x>
          <y value="100"></y>
        </stolbez1>
  </stolbzi>
  <setka>
    <x value="5"></x>
        <y value="105"></y>
        <step value="10"></step>
        <equstep value="1"></equstep>
        <xstart value="0"></xstart>
        <ystart value="0"></ystart>
        <dlinax value="100"></dlinax>
        <dlinay value="100"></dlinay>
        <otstupOX value="10"></otstupOX>
        <otstupOY value="10"></otstupOY>
        <smesh value="5"></smesh>
        <riskain value="1"></riskain>
        <riskaout value="3"></riskaout>
        <strDlina value="4"></strDlina>
        <strShir value="2"></strShir>
  </setka>
</diagrama>

При вызове функции выводит, что ничего в XML нет, подскажите, plz, что неправильно?

Greben 24.06.2004 10:40

Тебе во-первых не хватает строчки типа doc.ignoreWhite=true;

Greben 24.06.2004 10:59

В doc записывается xml, а xmlElt-у нельзя вот так присвоить doc. А что именно из xml ты хочешь выдрать?

Linuxoid_Alex 24.06.2004 11:34

данные для построения диаграммы... а как можно присвоить?
Даже если я пишу:
Код:

function ReadDataFromXML(filename)
{
  Data = new XML();
  Data.load(filename);
  Data.ignoreWhite=true;
  if (Data.loaded)
  {

  }else
  {
            trace("ERROR!");
  }
}

Выдаётся ERROR!

Greben 24.06.2004 11:49

Вообщем мне это вот так:
//первый кадр
doc = new XML();
doc.load("any.xml");
doc.ignoreWhite = true;
doc.onLoad = function() {
play();
}
stop();
//второй кодр
paramAttr = new Array();
paramName = new Array();
k = 0;
m = 0;
rootNode = doc.firstChild;
xmlRootArray = rootNode.childNodes;
len = xmlRootArray.length;
for (i=0; i<len; i++) {
xmlSecondArray = xmlRootArray[i].childNodes;
len2 = xmlSecondArray.length;
for (j=0; j<len2; j++) {
k++;
if (xmlSecondArray[j].firstChild == null) {
m++;
paramName[m] = xmlSecondArray[j].nodeName;
paramAttr[m] = xmlSecondArray[j].attributes.value;
} else {
xmlThirdArray = xmlSecondArray[j].childNodes;
len3 = xmlThirdArray.length;
for (l=0; l<len3; l++) {
m++;
paramName[m] =xmlThirdArray[l].nodeName;
paramAttr[m] = xmlThirdArray[l].attributes.value;
}
}
}
}
for(i=1;i<m;i++){
trace(paramName[i]);
trace(paramAttr[i]);
}
stop();


Наверное можно сделать более культурно, но у меня сегодня Днюха!!! А думать лениво :)

Greben 24.06.2004 11:50

Пардон, не знал что тут все пробелы съедятся )

FreeLander 24.06.2004 18:05

зачем xmlRootArray заводить - мона ж прям с rootNode.childNodes и работать...

Greben 24.06.2004 18:33

Понятно, что можно. Так ну нагляднее чтоли :)


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

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