![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
Оператор . (точка) примененный к объекту типа XML всегда даст врезультате XMLList - остальная часть вопроса мне не понятна...
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 56
|
вот XML:
<?xml version="1.0" encoding="utf-8"?>
<authors >
<author1 >
<name>Вася</name>
</author1>
<author2>
<name>Петя</name>
</author2>
</authors>
public class TestXML extends MovieClip { var childClassTestXML:ChildClassTestXML; // переменные считывания XML public static var mainXML:XML; private var mainXMLRequest:URLRequest=new URLRequest("testXML.xml"); private var mainXMLLoader:URLLoader = new URLLoader; // Конструктор ************************ public function TestXML() { loadMainXML(); } // Функции // Загрузка данных с XML private function loadMainXML():void { mainXMLLoader.load(mainXMLRequest); mainXMLLoader.addEventListener(Event.COMPLETE, mainXMLLoaded); } // После загрузки XML private function mainXMLLoaded(e:Event) { mainXML = new XML(mainXMLLoader.data); var childXML:XML = <author1><name></name></author1>; childClassTestXML = new ChildClassTestXML(childXML,"Новый Вася"); } } public class ChildClassTestXML extends MovieClip { // Конструктор ************************ public function ChildClassTestXML(xmlStructure:XML, myString:String) { super(); var mainXML = TestXML.mainXML; //основной XML var myXMLStructure:XML = xmlStructure.copy(); trace ("01. mainXML.XMLStructure = " + mainXML.myXMLStructure);// ничего нет, а надо добраться до "Вася"в mainXML.author1.name mainXML.myXMLStructure = myString; trace ("02. mainXML.author1.name = "+mainXML.author1.name) // Вася trace ("03. mainXML.XMLStructure = " + mainXML.myXMLStructure);//Новый Вася trace ("04. mainXML = " + mainXML); } ------------------------------------------------------------------------------- и вот что получается на : myXML = <authors>
<author1>
<name>Вася</name>
</author1>
<author2>
<name>Петя</name>
</author2>
<myXMLStructure>Новый Вася</myXMLStructure>
</authors>
var childXML:XML = <author1><name></name></author1>; childClassTestXML = new ChildClassTestXML(childXML,"Новый Вася"); Сделал вроде как вы посоветовали, но пока добавился просто тег <myXMLStructure>Новый Вася</myXMLStructure> че то лыжи не едут ![]() спасибо. Последний раз редактировалось wvxvw; 06.12.2009 в 21:48. |
|
|||||
|
Modus ponens
|
Я все равно не понимаю, что вы хотите сделать...
Цитата:
но, это как бы вполне очевидно, ну, только не понятно, что вы ожидаете от этого действия... Давайте, лучше по-другому... напишите, какой результат вы хотите получить, потому что иначе вас абсолютно не понятно. Если вы привыкли к какому-то другому подходу в работе с XML (PHP DOMDocument / Java SAX XMLReader / C# XmlReader и т.п) или что-то еще, то если вы об этом расскажете, то, наверное вас будет проще понять. Просто сейчас не понятна задача...
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 56
|
Извините, что я непонятно изъясняюсь. Я "дизайнер взявшийся за программирование"
), необходимо для быстрейшей реализации проекта.Сформулирую по другому: Измените пожалуйста функцию в родительском классе (весь код в моем предыдущем посте): // После загрузки XML private function mainXMLLoaded(e:Event) { mainXML = new XML(mainXMLLoader.data); var childXML:XML = <author1><name></name></author1>; //var childXML:XML = mainXML.author1.name; // так не работает!!! childClassTestXML = new ChildClassTestXML(childXML,"Новый Вася"); } <?xml version="1.0" encoding="utf-8"?>
<authors >
<author1 >
<name>Вася</name>
</author1>
</authors>
Последний раз редактировалось misha_yu; 06.12.2009 в 22:35. |
|
|||||
|
Modus ponens
|
Это уже проще:
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 56
|
Да но в моем случае строка выполняющая это действие
должна быть в дочернем объекте.... Это важно. На месте "Новый Вася" должно быть имя загружаемого на сервер файла, который будет считан только в объекте дочернего класса. а вот какой что надо изменять xml.author1.name[0] или xml.author1.name[2] это задается в родителе. т.е. грубо говоря так: код в родителе: var XMLStructure1 = xml.author1.name[0] myChild(XMLStructure1); var XMLStructure2 = xml.author1.name[1] myChild(XMLStructure2); спасибо за терпение.... ![]() |
|
|||||
|
Modus ponens
|
А какая разница? Вы же уже передали ссылку на XML дочернему объекту? XML - это сложный тип данных, поэтому передаетася по ссылке, если вы захотите наоборот, передать копию - есть метод copy().
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 56
|
да передал XML , но как мне сказать одному объекту чтобы он изменил xml.author1.name[0] а второму объекту чтобы он изменил xml.author1.name[1] и т.д.
задачу можно решить если передавать данные (имя загружаемого на сервер файла) из дочернего класса. Но это будет не красиво мне кажется, мутить лисенеры для функций в дочернем классе. |
|
|||||
|
Modus ponens
|
var xml:XML = <authors> <author1> <name>Вася</name> </author1> </authors>; this.foo(xml.author1.name[0], "Новый Вася"); function foo(node:XML, replaceWith:String):void { node.setChildren(replaceWith); } trace(xml.toXMLString()); /* <authors> <author1> <name>Новый Вася</name> </author1> </authors> */
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 56
|
Огромное спасибо..... фурычит
![]() Последний раз редактировалось misha_yu; 07.12.2009 в 09:20. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|