![]() |
Как из функции вытащить ссылку на XMLNode
Код:
function searchNode (myXML, nN:String){Код:
bbb = searchNode (des_xml, 'atp');//в общем сабж |
1. в чем может быть косяк:
Код:
function searchNode (myXML, nN:String){2. можно попробовать Код:
ccc = myXML.childNodes[i].toString() |
1. У меня это работает (xml описан в скрипте)
2. Зачем в строке if (String (myXML.childNodes[i].nodeName)... стоит приведение имени нода к String, когда имя нода и так String? И наконец главный вопрос: 3. Что будете делать, если у вас несколько нодов с именем 'atp'? Вот функция который обходит весь xml и возвращает массив нодов с заданным именем. Код:
//// ноды с именем A имеют номера id: 1,4,6,7 |
CorC
с типом тож не хочет... iNils 1. примерно такая же функция есть и у меня. но надо "лёгкую" функцию тк вызываться она будет часто и на слабой тачке 2. это для перестраховки. 3. xml-ка самопальная, имена в ней уникальные. тоже запихаю ссылку в массив и его возвращу, пасибо :) |
Тогда поиск вообще не нужен. Можно по уникальному id обращаться.
Код:
var xml:XML = new XML ("<nodeA id='1'><nodeB id='2'><nodeB id='w'><nodeA id='4'></nodeA></nodeB><nodeB id='5'></nodeB><nodeA id='6'><nodeA id='7'></nodeA></nodeA></nodeB><nodeB id='8'></nodeB></nodeA>"); |
А зачем idMap в скобках? :)
|
весь код
Код:
des_xml = new XML ();XML'ka такая Код:
<doct> |
Цитата:
Я не пользовался idMap с времен когда сидел на mx (вернее там и писать idMap не нужно было). И когда сейчас стал набирать idMap, то флеш стал ругаться. Цитата:
|
Мммм, это в каком Flash такая заморочка?
|
Цитата:
|
Очень странно, если у тебя не кастомный класс, который расширяет XML, то всё должно работать. Во всяком случае, у меня без всяких правок работает:
Код:
xml = new XML('<node id="3">'); |
А, всё ясно. Такой косяк возникает, если использовать var xml:XML = …
Лучше не править intrinsic и не пользовать скобки — лучшим решением будет написание кастомного класса, расширяющий XML. Я пользую исключительно свой AbstractXML: Код:
import mx.events.EventDispatcher; |
Это все хорошо, но не будешь же ты каждый раз здесь отвечая говорить о том, что нужно еще и класс скачать.
Если ответ в пару строк, то скобки не так страшны, по сути ты ничего не нарушаешь, ты же не виноват, что в intrinsic забыли написать то, что там должно быть. |
Не, просто при передаче проекта кому-либо лучше заюзать класс какой-нибудь, я про это.
|
Код:
des_xml = new XML ('<doct><atp><![cdata[A<des>АЦП]]></atp><ist><![cdata[AV<des>Источник тока]]></ist><vm_area><![cdata[V<des>вольтметр]]></vm_area></doct>'); |
Ну, вообще, судя по коду, должно быть undefined :)
|
во! есть на свете люди! почему? вроде возвращаю массив и тут же его присваиваю kkk?
|
Ну представь просто, как работает твой код. Если условие не выполняется, то происходит запуск этой функции второй раз и т.д. Так вот этот return, что был в самом начале уже никогда не выполнится из-за условия. А все последующие итерации, даже если нужный нод будет найден, будут выполнены в холостую — все возвраты уйдут в никуда, потому что ты его никуда не сохраняешь.
По-хорошему, это должно быть так: Код:
des_xml = new XML('<doct><atp><![cdata[A<des>АЦП]]></atp><ist><![cdata[AV<des>Источник тока]]></ist><vm_area><![cdata[V<des>вольтметр]]></vm_area></doct>'); |
__etc
Огромное спасибо! |
| Часовой пояс GMT +4, время: 20:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.