Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Чтение атрибутов из XML (http://www.flasher.ru/forum/showthread.php?t=186513)

aivashchenko 04.11.2012 19:07

Чтение атрибутов из XML
 
Добрый день!
подскажите как можно прочесть атрибуты из xml файла.
XML:
Код:

<appSettings>

    <add key="1-1" value="1" />
    <add key="2-2" value="2" />
 
  </appSettings>

Код AS3:

var myXML:XML;
 
function allLoad(event:Event):void {
var tempLoader:URLLoader=URLLoader(event.target);
tts: myXML=new XML(tempLoader.data);
if (myXML!="") {
for each (var item:XML in myXML.appSettings); {
ComText.htmlText+='<b>'+item.key+'</b> '+item.value+"<br>";}
} else {
ComText.htmlText="Пока комментариев нет";}
}

Если xml <тег>значение</тег> - проблем нет, но мне нужно прочесть из xml с вложенными атрибутами.

TWETTI 04.11.2012 19:37

Чтобы прочитать атрибут к нему надо обращаться через символ "@"
Код AS3:

xml.tag.@atrubute


aivashchenko 04.11.2012 19:52

Если я правильно понял, то должно быть так:
Код AS3:

function allLoad(event:Event):void {
var tempLoader:URLLoader=URLLoader(event.target);
tts: myXML=new XML(tempLoader.data);
if (myXML!="") {
for each (var item:XML in myXML.comment); {
ComText.htmlText+='<b>'+item.add.@name+'</b> '+item.add.@ip+"<br>";}
} else {
ComText.htmlText="Пока комментариев нет";}
}

К сожалению xml не читает. Подскажите пожалуйста где ошибка.

Добавлено через 1 минуту
для XML:
Код:

<?xml version="1.0" encoding="utf-8"?>
<test_1>
<coment>
<add name="Интервал_отправки_сообщений" ip ="25"/>
</comment>
</test_1>

Добавлено через 1 минуту
Код:

<test_1>
<coment>
<add name="Интервал_отправки_сообщений" ip ="25"/>
</comment>
</test_1>


TWETTI 04.11.2012 20:05

Так будет работать:
Код AS3:

var myXML:XML = new XML(
<test_1>
<comment>
<add name="Интервал_отправки_сообщений" ip ="25"/>
</comment>
</test_1>
);
 
if (myXML)
{
        for each (var item:XML in myXML.comment)
        {
                trace('<b>'+item.add.@name+'</b> '+item.add.@ip+"<br>");
        }
}
else
{
        trace("Пока комментариев нет");
}

У вас были ошибки в самом XML файле и в коде.

aivashchenko 04.11.2012 20:23

прошу прощения за глупость. Вот полны код:
Код AS3:

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, allLoad);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
 
function ioErrorHandler(event:IOErrorEvent):void {
trace("Невозможно загрузить файл - "+event);
}
 
var myXML:XML = new XML();
 
function allLoad(event:Event):void {
var tempLoader:URLLoader=URLLoader(event.target);
myXML=new XML(tempLoader.data);
if (myXML) {
for each (var item:XML in myXML.comment)
        {
                trace('<b>'+item.add.@name+'</b> '+item.add.@ip+"<br>");
        }
}
else
{
        trace("Пока комментариев нет");}
}
var request:URLRequest=new URLRequest("source/comments.xml");
loader.load(request);
loader.load(new URLRequest("source/comments.xml"));
var nameXML:String="source/comments.xml?"+Math.random();

Код:

<test_1>
<comment>
<add name="Интервал_отправки_сообщений" ip ="25"/>
</comment>
</test_1>

подскажите почему лыжи не едут

TWETTI 04.11.2012 20:27

У меня все работает.

aivashchenko 04.11.2012 20:46

скопипастил все отсюда и в AS3 и в xml. ничего не отображает в текстовом окне(((
в кэше не висит пробовал с другого компа

Isfet 05.11.2012 07:55

у меня тоже все работает
у вас так трейсится?
Код AS3:

myXML=new XML(tempLoader.data);
trace(myXML);

если нет, то файл лежит не в том месте.


если да, трейсите так и смотрите на каком шаге у вас не работает
Код AS3:

if (myXML!="") {
        trace(myXML.comment[0]);
        trace(myXML.comment[0].add.@ip);

эту строку
Код AS3:

if (myXML)

замените обратно на
Код AS3:

if (myXML!="")

так как даже при пустом XML она всегда будет возвращать true

elder_Nosferatu 05.11.2012 11:56

Осмелюсь предположить, что топик стартер ожидает вывод в каком нибуть текст-филде ибо действительно все трейсы работают...

gagaga 05.11.2012 13:40

мой вам совет: юзайте StringUtil.substitute()


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

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