![]() |
|
||||||||||
|
|||||
|
Всем привет, вот какой вопрос:
xmlStr ="<?xml version 1.0?> <cars> <car> <make>111</make> <model>sdadas</model> </car> </cars>"; //Это есть XML, который надо отпарсить myXML = new XML('xmlStr'); rootNode=myXML.firstChild; car=rootNode.firstChild; children=car.childNodes; trace(children[1].firstChild.toString()); В принципе этот код работает, но вот если засунуть содержимое в файл "test.xml" myXML = new XML(); myXML.load('test.xml'); программа выдаёт обидную надпись undefinded В чём тут закон? Зараннее благодарен, Искренне Ваш Бубен. |
|
|||||
|
проверял или нет, он ваще грузится xml или нет?
|
|
|||||
|
#include ('test.xml')
__________________
--- |
|
|||||
|
Он грузится, по крайней мере когда задаешь неправельное имя файла матерится, а по поводу инклуда, если файл лежит на сервере, то мне кажется тут инклуд не подходит...
|
|
|||||
|
от делать не фига.... разобрался с кривым xml парсером, чтоь им худо было в этой макромедии
xml на самом деле не грузился... а только делал попытку )первым делом, грохаешь в XML файле строчку: <?xml version 1.0?> хотя можно и не грохать... но лучше без нее затем обязательно root (т.е. cars) должен стоять в первой строчке, иначе перевод строки флеш понимает как нод т.е. XML имеет след. вид: <CARS> <car> <make>111</make> <model>sdadas</model> </car> </CARS> причем работает токо если заглавные буквы у рута, вот бред же затем я взял пример из хелпа для MX и сделал следующее: unction myOnLoad(success) { if (success) { e = _root.myLoginReply trace(e); if (e.firstChild.nodeName == "CARS") { var cs = e.firstChild; trace(cs.nodeName); //CARS var c = cs.childNodes[1]; trace(c.nodeName); var m = c.childNodes[1]; trace(m); var m_text = m.firstChild; trace(m_text); trace("loggedIn") } else { trace("loginFailed") } } else { trace("connectionFailed") } } var myLoginReply = new XML(); myLoginReply.load("test.xml"); myLoginReply.onLoad = myOnLoad; в output`e вывело: <CARS> <car> <make>111</make> <model>sdadas</model> </car> </CARS> CARS car <make>111</make> 111 loggedIn ну а дальше понятно, причем везде, во всех парсерах childNodes идет нумерация с 0, в макромедии опять издрочились и сделали с 1, бреееееддд |
|
|||||
|
иногда полезно указывать кодировку в xml
то пишешь <?xml version 1.0?><CARS> <car> <make>111</make> <model>sdadas</model> </car> </CARS> ну и в <?xml version 1.0?> вставляешь кодировку нужную |
|
|||||
|
Ага, спасибо Андрей, теперь ко крайне мере есть с чего начать, если чо мож еще что нибудь спрошу
Бубен. |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
> Buben
> программа выдаёт обидную надпись undefinded Когда вызываешь: myXML.load('test.xml'); твой скрипт продолжает выполняться дальше, а XML документ в параллельном процессе грузится. Т.е. если ты пытаешься обратиться к myXML сразу после load, то там будет пусто, т.к. документ еще не загрузился. Нужно повесить свой обработчик на событие myXML.onLoad (см. help), и твоя функция будет вызвана когда XML документ будет полностью загружен и уже в этой функции можешь делать с XML все что нужно. > AndreyTS > иначе перевод строки флеш понимает как нод См. HELP про ignoreWhite укажи myLoginReply.ignoreWhite = true; и пробелы и переводы строк будут игнорироваться. > от делать не фига.... разобрался с кривым xml парсером, чтоь им худо было в этой макромедии Перед тем, как делать громкие заявления, надо убедиться в некривости собственных рук... XML парсер малофункциональный - это да, но работает стабильно, никаких глюков замечено не было. |
|
|||||
|
ДА я уже понял, кстати пример который AndreyTS привел не совсем работает, вот рабочий пример обхода дерева
childs = testXml.childNodes;//cars for( i=0; i<childs.length; i++) { if ( childs[i].nodeType == 1) { trace( childs[i].nodeName); childs1 = childs[1].childNodes;//cars for( i=0; i<childs1.length; i++) { if ( childs1[i].nodeType == 1) { trace( childs1[i].nodeName); } } } } ну и так делее, принцип я думаю понятен. |
|
|||||
|
то что руки некривые это сто пудов
, доказано временема то что парсер сделан не как у людей , то это тоже сто пудов... возмите в пример парсер MSXML, вот это вещь... куча методов и свойств, работает на ура, можно без всякой документации разобраться просто просмотрев список этих самых методов... и после него парсер макромедии на стоко плох, что и слов нет .... чего значит токо , на мой взгляд полное уродство, что текст в ноде - это не св-во нода, как везде, а по сути еще один нод |
![]() |
Часовой пояс GMT +4, время: 01:28. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|