![]() |
|
||||||||||
|
|
|
|||||
|
Есть дерево, которое загружается в объект menu_xml, притом оно может меняться:
<demo name="Demo 1"> <folder name="Lesson 1"> <clips> <clip name="Part 1">part1.swf</clip> <clip name="Part 2">part2.swf</clip> <clip name="Part 3">part3.swf</clip> </clips> </folder> <folder name="Lesson 2"> <clips> <clip name="Part 1">part1.swf</clip> <clip name="Part 2">part2.swf</clip> </clips> </folder> </demo> Требуется для дальнейшей работы раскидать его на два массива, один с названиями, другой с именами файлов. |
|
|||||
|
Регистрация: Jan 2004
Адрес: нигде - не осталось на Земле свободных земель(
Сообщений: 1,176
|
myArray[0]= new Array();
myArray[1]= new Array();
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.xmlDecl = "<?xml version=\"1.0\"?>";
my_xml.onLoad = function(success:Boolean) {
scanFolder(my_xml.firstChild.firstChild);
};
scanFolder = function(node_XMLNode){
var child_xml =new XML;
child_xml = (node_XMLNode.firstChild.firstChild);
while (child_xml){
myArray[0][myArray[0].length]=child_xml.attributes.name;
myArray[1][myArray[1].length]=child_xml.nodeValue;
child_xml=child_xml.nextSibling;
}
if (node_XMLNode.nextSibling)
scanFolder(node_XMLNode.nextSibling)
else{
trace(myArray[0])
trace(myArray[1])
};
}
my_xml.load("some.xml");
грешу на исходные данные. плохое решение - пихать значения в атрибуты |
|
|||||
|
Спасибо, сейчас попробую применить на практике.
|
|
|||||
|
А по поводу ".nodeValue;" Все работает если писать firstChild.nodeValue. Это так, если кого-то вдруг эта проблема тоже будет волновать.
|
|
|||||
|
Регистрация: Jan 2004
Адрес: нигде - не осталось на Земле свободных земель(
Сообщений: 1,176
|
Цитата:
Цитата:
|
|
|||||
|
Чем плоха практика пихания значений в аттрибуты?
__________________
Голова она не только для того, чтобы кашу есть... |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
<clip name="Part 1">part1.swf</clip>
- налицо неправильная организация XML. правильно наоборот: <clip url="part1.swf">Part 1</clip> потому что может понадобиться форматирование типа <clip url="part1.swf"><![CDATA[<font color="#FF0000">Part 1<font>]]></clip> в то время как part1.swf никогда форматирования не потребует. далее: такого рода перегонка из XML в массив НЕ НУЖНА и говорит о том, что разработчик попросту не умеет работать с XML. Последний раз редактировалось BitSky; 30.09.2005 в 15:36. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
> Чем плоха практика пихания значений в аттрибуты?
1. тем что HTML форматирование атрибутов возможно но затруднительно. 2. длинные тексты в атрибутах ухудшают читабельность XML. |
|
|||||
|
Так они на то и аттрибуты, чтобы какую-то дополнительную, но не тяжелую и не требующую дополнительной обработки информацию хранить. XML документ действительно не продуман, но это уже дело практики
![]()
__________________
Голова она не только для того, чтобы кашу есть... |
|
|||||
|
Я спросил про перегонку в масив, чтобы как раз посмотреть как с xml работать, потому, как по голому хэлпу очень трудно разобраться. Сейчас у меня несколько рекурсивных алгоритмов, которые всесторенное делают из этого xml я меню любой глубины и без использования внешних масивов или чего-бо там небыло...
Что касается написания xml-я то в моем случае не будет меняться ни один из этих парраметров. Единственное что к типу folder я добавил изменяющийся элемент - открыто/закрыто. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|