Форум 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=105063)

TheStriker 13.12.2007 19:12

Спасибо всем за ответы!

Проблему то я решил, но про XML ничего так и не понял....

Я немогу понять иерархию....
Код:

<root>
      <child>Node</child>
      <child2>Node2</child>
</root>

Никак немогу понять что тут ROOTNODE, что CHILDNODE,что firstChild, что nodeValue?

udaaff 13.12.2007 20:14

-- rootNode -- корневой узел (<root>)
-- childNode -- дочерний узел (дочерние узлы <root> -- <child> и <child2>. У них соотв. дочерние узлы Node и Node2)
-- firstChild -- "первый ребенок" первый узел (В узле <root> это <child>, в узле <child> это текстовый узел Node
-- nodeValue -- значение узла (у узла Node, значение Node)

TheStriker 13.12.2007 22:27

Цитата:

Сообщение от udaaff
-- rootNode -- корневой узел (<root>)
-- childNode -- дочерний узел (дочерние узлы <root> -- <child> и <child2>. У них соотв. дочерние узлы Node и Node2)
-- firstChild -- "первый ребенок" первый узел (В узле <root> это <child>, в узле <child> это текстовый узел Node
-- nodeValue -- значение узла (у узла Node, значение Node)

А насчет обращения к ним? Я не совсем пойму....

Со строкой this.firstChild.childNode - оно выводит undefined.....

мне в предыдущих постах дали строчку

this.firstChild.firstChild.firstChild.childNodes[1].firstChild.nodeValue

Оно то сработало, но я не пойму почему..... Почему 3 firstChild,почему childNodes[1], и почему после него еще один firstChild? Что из них к какому элементу обращается?

udaaff 13.12.2007 23:19

http://www.artlebedev.ru/tools/techn...etc/flash-xml/

amesqit 13.12.2007 23:26

Код:

<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
    <trackList>
          <track>
              <title>Movie (FLV)</title>
              <urllink>http://www.my.com</urllink>
          </track>
    </trackList>
</playlist>

ищем значение "urllink" с помощью
Код:

this.firstChild.firstChild.firstChild.childNodes[1].firstChild.nodeValue
Результат примерно такая структура, в плане веток (хоть это и не код, но все же):
Код:

playlist
|_trackList
....|_track
.......|_title
.......|..|_Movie (FLV)
.......|_urllink
..........|_http://www.my.com

надеюсь понятно
1) забиваем на шапку <?xml version="1.0" encoding="utf-8"?>
2) this, в данном случае это и есть все дерево, объект класса XML();
3) this.firstChild - то же самое, что и (2), но firstChild, говорит, что обращаемся к первому узлу (он тут едиственный, корневой) "playlist"
4) this.firstChild.firstChild - обращаемся к первому дочернему узлу, узла "playlist", (опять же единственному) "track"
5) this.firstChild.firstChild.firstChild - опять первый и единственный узел "track", отсюда и 3 firstChild-а :)
6) this.firstChild.firstChild.firstChild.childNodes[1] - childNodes - массив дочерних узлов, стоит "1", т.к. нужен второй эллемент (отсчет с нуля, естественно)
7)this.firstChild.firstChild.firstChild.childNodes[1].firstChild - как можно уже догадаться, узел единственный и первый, можно конечно везде firstChild заменить на childNodes[0], но нафик (достаточно веский аргумент :) )
8) this.firstChild.firstChild.firstChild.childNodes[1].firstChild.nodeValue - nodeValue- используется для получения значения узла в виде строки, лучше его использовать для получения значения текстового узла (как в данном случае), ибо в противном случае это дело возвратит "null"

надеюсь теперь понятно как работает эта строчка и что к чему обращается.
P.S.: в данном случае лучше использовать атрибуты, а не тестовые узлы, нет здесь в текстовых узлах никакого смысла.

TheStriker 15.12.2007 21:47

ВАУ!!! Даже СУПЕР ВАУ!!! Во это ИМЕННО то в чем моя тупая голова нуждалась!

Пошел я осмысливать и пробовать.

ОГРОМНОЕ СПАСИБИЩЕ amesquit !!!

etc 15.12.2007 22:19

amesqit, и так вы будете работать с каждым XML? Писать километровые обращения по нодам?

TheStriker 16.12.2007 03:29

Чувствую себя туп-тупарём.....

XML:
Код:

<image>
        <name>Image name</name>
        <xpos>X position</xpos>
        <ypos>Y position</ypos>
</image>

Flash file:
Код:

var filik:XML = new XML();
filik.ignoreWhite = true;
filik.load("file.xml");
ts = this.firstChild.childNodes[0].firstChild.nodeValue;
trace(ts);

Что не так?:wacko:

Цитата:

Сообщение от __etc
amesqit, и так вы будете работать с каждым XML? Писать километровые обращения по нодам?

Да мне б пока хоть так допереть.....

udaaff 16.12.2007 12:55

Код:

var filik:XML = new XML();
filik.ignoreWhite = true;
filik.onLoad = function(){
    ts = this.firstChild.childNodes[0].firstChild.nodeValue;
    trace(ts);
}
filik.load("file.xml");


TheStriker 16.12.2007 17:20

Цитата:

Сообщение от udaaff
Код:

var filik:XML = new XML();
filik.ignoreWhite = true;
filik.onLoad = function(){
    ts = this.firstChild.childNodes[0].firstChild.nodeValue;
    trace(ts);
}
filik.load("file.xml");


А что без onLoad оно никак не работает?


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

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