PDA

Просмотр полной версии : чтение xml из класса


alecsisk
03.04.2008, 18:02
Извините, кто-нибудь читал файл xml из класса? Никак не могу сделать... :( Если читали то подскажите пожалуйста как или поделитесь ссылкой. Просто гораздо интереснее написать 2 строчки кода и получить готовый массив из xml с помощью класса, чем написать 30 строчек которые будут мешаться.

Obi
03.04.2008, 18:45
Извиняем, читали. Из класса так-же читать, как и не из класса.

alecsisk
03.04.2008, 18:59
Это конечно хорошо что вы читали, но я попросил сказать как. Я пробывал записать в 'as file' функцию, потом вызывать её из swf, всё работает с #include. Но интересует вопрос чтения именно из класса, там код будет другим. Так что я не знаю как вы читали "из класса так же как не из класса"

Obi
03.04.2008, 19:04
Какой инклуд, о чем вы?

class LoadXML() {
public function LoadXML(url:String) {
var myXML:XML = new XML();
myXML.load(url);
myXML.onData = function(str:String) { trace(str) }
}

=======================

new LoadXML("myxml.xml");

alecsisk
03.04.2008, 19:28
Подредактировал class LoadXML {
public function LoadXML(url:String) {
var myXML:XML = new XML();
myXML.load(url);
myXML.ignoreWhite = true;
public var len_index:Number;
len_index = myXML.firstChild.childNodes.length;
trace(len_index);
}
}
Выдает public var len_index:Number - Attribute used outside class.Такая же проблема у меня. Навена какая-нить глупая ошибка :(
UPD: эту ошибку решил, обьявлять len_index надо вне фунции, теперь trace говорит undifined

Obi
03.04.2008, 20:39
Глобальные свойства нужно определять вне методов
Да и вместо public лучше писать private и ставить getter/setter.


UPD: эту ошибку решил, обьявлять len_index надо вне фунции, теперь trace говорит undifined

Ну правильно, ведь хмл еще не загрузился, а вы его уже трейсите.
надо так:

class LoadXML {
private var len_index:Number;
public function LoadXML(url:String) {
var myXML:XML = new XML();
myXML.load(url);
myXML.onLoad = function() {
this.ignoreWhite = true;
len_index = this.firstChild.childNodes.length;
trace(len_index);
}
}
}

alecsisk
03.04.2008, 21:10
Спасибо, думаю без вас бы не справился =). Только myXML.ignoreWhite = true нады поставить такpublic function LoadXML(url:String) {
var myXML:XML = new XML();
myXML.load(url);
myXML.ignoreWhite = true; иначе трэйсица 0.

Obi
03.04.2008, 21:11
Ой, пардон, опечатался.