Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Странный парсер XML (http://www.flasher.ru/forum/showthread.php?t=142258)

in4core 16.07.2010 14:24

Странный парсер XML
 
Получаем списочек друзьев XML из вконтакте.

Пример ( начало)
str =
Код:

<?xml version='1.0' encoding='utf-8'?><response list='true'> <user>  <uid>8311</uid>  <first_name>Aleksey</first_name>  <last_name>Souetov</last_name>  <photo_medium>http://cs9438.vkontakte.ru/u08311/b_4e3bd94d.jpg</photo_medium>  <online>0</online> </user> <user>  <uid>48114</uid>  <first_name>Gl</first_name>  <last_name>All</last_name>  <photo_medium>http://cs9653.vkontakte.ru/u48114/b_525adfad.jpg</photo_medium>  <online>0</online> </user> <user>  <uid>57693</uid>  <first_name>Koshkin</first_name>  <last_name>Spiel</last_name>  <photo_medium>http://cs729.vkontakte.ru/u57693/b_87f4c860.jpg</photo_medium>  <online>0</online> </user> </response>
Код AS1/AS2:

var xm = new XML(str.split("\n").join(""))
 
var x = xm.firstChild.childNodes;
 
trace(x);  /* 
 
 ,<user>  <uid>8311</uid>  <first_name>Aleksey</first_name>  <last_name>Souetov</last_name>  <photo_medium>http://cs9438.vkontakte.ru/u08311/b_4e3bd94d.jpg</photo_medium>  <online>0</online> </user>, ,<user>  <uid>48114</uid>  <first_name>Gl</first_name>  <last_name>All</last_name>  <photo_medium>http://cs9653.vkontakte.ru/u48114/b_525adfad.jpg</photo_medium>  <online>0</online> </user>, , <user>......................  */

Откуда взялись запятые? не могу понять!!! Это первый вопрос

Второй вопрос почему:
Код AS1/AS2:

trace(x.split(",").join("")) // undefined


etc 16.07.2010 14:36

childNodes какой тип имеет?

in4core 16.07.2010 14:50

Это на какой вопрос ?

Добавлено через 1 минуту
еслми об этом то :

Код AS1/AS2:

trace(typeof(xm.firstChild.childNodes))

== object

etc 16.07.2010 14:58

Вообще-то Array.

in4core 16.07.2010 15:06

Ну Array это и есть по сути инстанс объкекта. Только это к чему? Что делать с запятыми ? почему такой xml получается непонятный? как его правильно парсить и т.д. не могу понять, первый раз с xml проблема за всю жизнь

Хемуль 16.07.2010 15:08

2 in4core:
Вы что, никогда не трейсили массивы? ^_^
Запятые разделяют элементы массива для наглядности, в результате работы trace.

etc 16.07.2010 15:10

Угу, а элементами массива являются XMLNode. И непонятно, зачем вы пытаетесь вызвать split у массива, у него нет такого метода, это метод String-а.

in4core 16.07.2010 15:11

Это все понятно. Вопрос был как верно парсить такой XML . Чтобы в итоге push в массивы nodeValue

etc 16.07.2010 15:12

Откройте в кои-то веки доку по childNodes.

in4core 16.07.2010 15:22

Разобрался. Правда убить их мало за пробелы оставляемые между нодами. пришлось чистить

udaaff 16.07.2010 15:34

ignoreWhite в помощь.

in4core 16.07.2010 15:36

Игнор вайт срабатывает тока при onLoad как я понял. тут он не помог к сожалению. потому что данные я получаю ввиду строки. А сделать сплит поначалу не могу, поскольку в firstChild есть аттрибут. Приходится сначала вытягивать childNodes потом переводит в строку потом тока резать пробелы, и снова загонять в XML.... ужас

Добавлено через 1 минуту
И вот еще загвоздочка появилась

Код AS1/AS2:

trace(xm1.childNodes[0].childNodes[0])  // <uid>4444</uid>
trace(xm1.childNodes[0].childNodes[0].nodeName) // uid
trace(xm1.childNodes[0].childNodes[0].nodeValue) // null  - почему ?


etc 16.07.2010 15:39

Потому что .firstChild.nodeValue. Число — тоже нод, только текстовый.

А ignoreWhite помогает всем. Почему у вас с ним проблемы, непонятно.

Хемуль 16.07.2010 15:41

Цитата:

Сообщение от in4core (Сообщение 922767)
Игнор вайт срабатывает тока при onLoad как я понял. тут он не помог к сожалению. потому что данные я получаю ввиду строки.

А, вы решили парсить XML вручную и получаете его текст на onData?

in4core 16.07.2010 15:41

Разобрался )))

Добавлено через 1 минуту
Нет я получаю не на он дата ни на он лоад. Я получаю XML ввиду строки по loadVars
и ответ new XML(result_of_loadVars)

Добавлено через 2 минуты
Всем спасибо. особенно etc открыл глаза на мир)))

etc 16.07.2010 15:44

А нафиг LoadVars? За каким хреном такие извращения, если XML умеет сам грузиться?

Хемуль 16.07.2010 15:47

Цитата:

Сообщение от etc (Сообщение 922778)
А нафиг LoadVars? За каким хреном такие извращения, если XML умеет сам грузиться?

Наверное, хотелось посылать переменные на сервер через POST. ^_^

in4core 16.07.2010 15:48

Секундочку. может я что то туплю конечно, но каким образом я по твоему буду грузить XML если метод friends.get получается тока при отправке данных на сервер в контакте, а в ответ соот приходит XML. Или я как бы ясновидящий чтобы знать СЕКРЕТНЫЙ урл своего XML чтобы скачать его с http ?)) Или я чето не понимаю и есть способы удобнее? А я вот опять ниче не знаю и посылаю запросы на сервер почем зря!

Добавлено через 1 минуту
to хемуль - пост или гет не влияет в данный момент ни на что. Ответ всегда приходит один

Хемуль 16.07.2010 15:51

2 in4core:
Код AS1/AS2:

myXML.load("http://mysite.com/my_xml.php?var1=value1&var2=value2");


in4core 16.07.2010 15:56

Вот опять просто все.... а я туплю ) Ленин форева. спасибо


Часовой пояс GMT +4, время: 23:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.