Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.12.2009, 23:15
Wecoyote вне форума Посмотреть профиль Отправить личное сообщение для Wecoyote Найти все сообщения от Wecoyote
  № 1  
Ответить с цитированием
Wecoyote

Регистрация: Dec 2009
Сообщений: 7
По умолчанию Обработка xml

Флешка запрашивает метод веб сервиса на asp.net, получает в ответ xml
Полученный xml присваивается переменной.
xml следующего содержания:

Код:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <tstAdditionResponse xmlns="http://tempuri.org/">
      <tstAdditionResult>13</tstAdditionResult>
    </tstAdditionResponse>
  </soap:Body>
</soap:Envelope>
Необходимо присвоить переменной типа Number значение tstAdditionResult (в данном случае - 13)

Помогите разобраться, пытался писать что-то вроде:
trace(myXml.tstAdditionResult);
Выводит пустую строку.

Старый 27.12.2009, 00:24
Dos87 вне форума Посмотреть профиль Отправить личное сообщение для Dos87 Найти все сообщения от Dos87
  № 2  
Ответить с цитированием
Dos87
[+1 02.07.09]

Регистрация: Jun 2009
Сообщений: 39
Поставь брекпоинт на метод, в котором происходит завершение загрузки XML и в ДебагМод (ctrl+shift+enter) посмотри путь к переменной "tstAdditionResult".
Н-р (на сокетах):
брекпоинт на: private function loadCompleteHandler(eataEvent):void {}
Смотри переменную "е".
e.data - это присланная xml
Скорее всего обратиться к "tstAdditionResult" можно так: e.data.tstAdditionResponse.tstAdditionResult

Старый 27.12.2009, 00:45
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS3:
var tempuriNS:Namespace = new Namespace("http://tempuri.org/");
var result:Number = Number(xml..tempuriNS::tstAdditionResult);

Старый 27.12.2009, 03:16
Dos87 вне форума Посмотреть профиль Отправить личное сообщение для Dos87 Найти все сообщения от Dos87
  № 4  
Ответить с цитированием
Dos87
[+1 02.07.09]

Регистрация: Jun 2009
Сообщений: 39
Точно. Забыл про пространства имён. Никогда ими не пользуюсь =)

Старый 27.12.2009, 07:28
Wecoyote вне форума Посмотреть профиль Отправить личное сообщение для Wecoyote Найти все сообщения от Wecoyote
  № 5  
Ответить с цитированием
Wecoyote

Регистрация: Dec 2009
Сообщений: 7
udaaff, спасибо, работает. А почему две точки (xml..) ? Если ставлю одну - пишет result = 0, если две result = 13.

Добавлено через 2 часа 37 минут
Эххъъ. Прошу не бить ногами, но получилась такая штуковина:
Имеем XML:

Код:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <getCarByIndexResponse xmlns="http://tempuri.org/">
      <getCarByIndexResult>
        <Car>
          <petName>Zippy</petName>
          <maxSpeed>180</maxSpeed>
        </Car>
        <Car>
          <petName>Fred</petName>
          <maxSpeed>210</maxSpeed>
        </Car>
        <Car>
          <petName>Sally</petName>
          <maxSpeed>80</maxSpeed>
        </Car>
      </getCarByIndexResult>
    </getCarByIndexResponse>
  </soap:Body>
</soap:Envelope>
Чтобы добраться до св-ва petName, например второго в списке автомобиля (значение "Fred") приходится писать вот такую строку:

Код AS3:
((myXml..myNamespace::getCarByIndexResult)..myNamespace::Car[1])..myNamespace::petName
Если это можно сделать не извращаясь так, то укажите пожалуйста на мою ошибку.


Последний раз редактировалось Wecoyote; 27.12.2009 в 10:06.
Старый 27.12.2009, 11:27
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
А почему две точки (xml..) ?
Цитата:
Оператор .. обеспечивает навигацию к потомкам объекта XML или XMLList, либо (в сочетании с оператором @) находит соответствующие атрибуты потомков. Соответствующие элементы или атрибуты не обязательно должны быть прямыми потомками объекта XML или XMLList (дочерними объектами первого уровня); они могут располагаться на более низком уровне дерева (например, быть дочерними объектами второго уровня). Результатом является объект XMLList, так как может совпадать несколько дочерних элементов или атрибутов.
В данном случае можно сразу XMLList всех элементов Car вытянуть:
Код AS3:
var ns:Namespace = new Namespace("http://tempuri.org/");
trace(xml..ns::Car[1].ns::petName) // Fred

Старый 27.12.2009, 11:40
Wecoyote вне форума Посмотреть профиль Отправить личное сообщение для Wecoyote Найти все сообщения от Wecoyote
  № 7  
Ответить с цитированием
Wecoyote

Регистрация: Dec 2009
Сообщений: 7
udaaff, еще раз спасибище. Очень помог.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
webservice , xml

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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