Форум 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 06.12.2007 21:54

XML данные
 
Доброго времени суток!

Простите за возможно глупый вопрос, но -

Есть XML файл с таким содержанием:
Код:

<?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 ?

я до этого не имел дела с XML и по манам что-то очень слабо понял что-либо на эту тему....

Заранее спасибо за ответы!

wvxvw 06.12.2007 22:05

nodeName == "urllink" ? (да, это он) : (нет, опять не то!).

Fernando Costa 06.12.2007 22:08

Код:

<playlist version="1" xmlns="http://xspf.org/ns/0/">
        <trackList>
                <track tittle = "Movie (FLV)" urllink = "http://www.my.com" />
        </trackList>
</playlist>


вот такая конструкция XML пограмотнее будет.:umnik2:

TheStriker 06.12.2007 22:17

Цитата:

Сообщение от wvxvw
nodeName == "urllink" ? (да, это он) : (нет, опять не то!).

Код:

var go_xml:XML = new XML();
go_xml.load("myttl.xml");

На данном этапе у меня весь XML файл должен быть в go_xml - так?

Только как мне теперь загнать значение этого nodeName в переменную?

Вот где вопрос.....

amesqit 06.12.2007 22:18

Цитата:

Как из него вытянуть значение ИМЕННО urllink ?
ИМЕННО из этого xml-файла (1.xml), ИМЕННО urllink, можно вытянуть ИМЕННО так:

Код:

var node:XML = new XML();
node.ignoreWhite = true;
node.onLoad = function() {
        var link:String = this.firstChild.firstChild.firstChild.childNodes[1].firstChild.nodeValue;
        trace(link);
};
node.load("1.xml");


TheStriker 06.12.2007 22:37

Цитата:

Сообщение от amesqit
ИМЕННО из этого xml-файла (1.xml), ИМЕННО urllink, можно вытянуть ИМЕННО так:

Хорошо. А если, предположим, файл будет выглядеть так:

Код:

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

То что измениться в Вашем фрагменте кода?

Спасибо.

З.Ы. Нужно для сравнения чтобы хоть что-то понять, а не просто получить результат.

wvxvw 06.12.2007 23:28

nodeName - свойство XMLNode, если оно является определяющим в поиске, то вот вариант:
Код:

var _xml:XML = new XML("<a><b/><c/><c/><d prop='1'/><e>text</e><f><f/></f></a>");
function __getNodes(_str:String, _xml:XML):Array {
        var r_arr:Array = [];
        var i:Number = _xml.childNodes.length;
        while(i){
                i--;
                if(_xml.childNodes[i].hasChildNodes){
                        r_arr = r_arr.concat(__getNodes(_str, _xml.childNodes[i]));
                }
                if(_xml.childNodes[i].nodeName == _str){
                        trace(_str+" node found: "+_xml.childNodes[i]);
                        r_arr.push(_xml.childNodes[i]);
                }
        }
        return r_arr;
}
trace("Result Array: "+__getNodes("b",_xml)+"\r------------------------");
trace("Result Array: "+__getNodes("c",_xml)+"\r------------------------");
trace("Result Array: "+__getNodes("d",_xml)+"\r------------------------");
trace("Result Array: "+__getNodes("e",_xml)+"\r------------------------");
trace("Result Array: "+__getNodes("f",_xml)+"\r------------------------");

Результат трейса:
b node found: <b />
Result Array: <b />
------------------------
c node found: <c />
c node found: <c />
Result Array: <c />,<c />
------------------------
d node found: <d prop="1" />
Result Array: <d prop="1" />
------------------------
e node found: <e>text</e>
Result Array: <e>text</e>
------------------------
f node found: <f />
f node found: <f><f /></f>
Result Array: <f />,<f><f /></f>
------------------------

amesqit 07.12.2007 00:22

лично я посоветовал бы тчательнее изучить 2 класса XML() и XMLNode(), там много всего полезного и интересного. Одно дело пытаться разобраться в чужом коде, что зачем, а другое почитать хелп (чужой код он не всегда хороший). Для меня, например, всегда как-то удобнее было пользоваться циклами for() для обхода xml-деревьев, но это уже личные предпочтения, для меня код такой код читавбельнее, чем циклы while().

Fernando Costa 07.12.2007 13:23

Цитата:

Сообщение от TheStriker
Хорошо. А если, предположим, файл будет выглядеть так:

Код:

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

                </track>
        </trackList>
</playlist>


вот именно для таких случаев лучше пихать эту инфу(зеленую) в атрибуты, и не будет возникать проблем при парсинге. Проверено на своем опыте

wvxvw 07.12.2007 13:40

Цитата:

for() для обхода xml-деревьев, но это уже личные предпочтения, для меня код такой код читавбельнее, чем циклы while().
В предыдущих версиях плеера while работал быстрее, сейчас не уверен.


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

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