PDA

Просмотр полной версии : Загрузить весь xml


deman455
16.02.2010, 16:13
Эм, вот проблема, надо загрузить весь хмл в динамический текст.
this.childNodes[0] - грузит только первые скобки, как все загрузить, скажите пожалуйста !

point111
16.02.2010, 18:43
ну, например, организовать цикл по количеству узлов и плюсовать их в одну переменную

deman455
16.02.2010, 18:55
onFrame(2){
xml = new XML();
xml.ignoreWhite = true;
xml.onLoad = function() {
for (i=0;i<=50;i++){
_root.load.text += this.childNodes[i];
}
};
xml.load("name.xml");
}

Пишет NaN что то не получится так.

point111
16.02.2010, 19:21
а у меня твой код работает

_root.createTextField("size_txt",1,10,10,300,120);
size_txt.wordWrap = true;

xml = new XML();
xml.ignoreWhite = true;
xml.onLoad = function() {
for (i=0; i<=50; i++) {
_root.size_txt.text += this.childNodes[i];
}
};
xml.load("name.xml");

текст "name.xml":
<?xml version="1.0" encoding="UTF-8"?>

<response command="settings">
<setting value=" 1"/>
</response>

<response command="settings">
<setting value=" 2"/>
</response>

<response command="settings">
<setting value=" 3"/>
</response>

udaaff
16.02.2010, 19:31
point111, у xml должен быть только один корневой узел.

deman455, выводите сразу весь свой xml
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xml_onLoadHandler;
xml.load("test.xml");

function xml_onLoadHandler():Void
{
trace(this.firstChild);
}

Или вам что-то конкретное нужно достать из XML и вывести? В этом случае пример XML приведите, и того, что необходимо вывести.

point111
16.02.2010, 19:46
конкретное нужно достать из XML и вывести?
скорей всего так и есть, но человек просил конкретно ВСЁ.

ps
а почему только один корневой узел? Приведенный выше код спокойно проглотил всё, что ему подсунули, или есть какой-то стандарт?

udaaff
16.02.2010, 19:51
Это стандарт XML. В AS3 уже такой файл в xml не конвертируется. Вылетит ошибка:
TypeError: Error #1088: The markup in the document following the root element must be well-formed.

Или если в IE попытаться открыть:
Only one top level element is allowed in an XML document. Error processing resource 'file:///D:/tests/test.xml'. Line 5, P...

point111
16.02.2010, 20:07
упс...
вот засада, а я частенько в одном XML делал пару корневиков с разной структурой и обращался к ним firstChild и lastChild - всё, лавочка прикрылась? lastChild в AS3 не работает?

deman455
16.02.2010, 20:22
udaaff / this.firstChild - выводит мне только первую часть xml ! вот моя xml :

<?xml version="1.0"?>
<name>Имя1,Имя2,Имя3,Имя4,Имя5,Имя6,Имя7,Имя8,Имя9,Имя10,Имя11,Имя12,Имя13,Имя14,Имя15,Имя16,Имя17,Имя18,Имя19,Имя20,Имя21,Имя22,Имя23,Имя24</name>

<allItem>item1,item2,item3</allItem>

<name>Имя 1,pass

<inform>12,23,41,11,22</inform>

</name>


<name>Имя 2,pass

<inform>12,23,41,11,22</inform>

</name>

........Т.Д...........................................


считывает только <name>Имя1,Имя2...</name>

udaaff
16.02.2010, 20:27
упс...
вот засада, а я частенько в одном XML делал пару корневиков с разной структурой и обращался к ним firstChild и lastChild - всё, лавочка прикрылась? lastChild в AS3 не работает?

Для обратной совместимости сохранена DOM модель, поэтому лавочка не прикрылась. А вот использовать гораздо более удобный E4X синтаксис не получится.

deman455, добавьте корневой узел <root></root>, допустим.

deman455
16.02.2010, 20:35
udaaff, все спасибо, сам думал так сделать, но поленился )

Добавлено через 10 минут
udaaff, Появился еще один вопрос, у меня программа уже просто настроена так, что <root></root> не предусмотрен, каким образом, после загрузки xml убрать с начала, и с конца <root> ?? (в моем динамическом тексте)