Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Обработка xml (http://www.flasher.ru/forum/showthread.php?t=158043)

boriskaaa 14.06.2011 14:52

Обработка xml
 
Всем привет.


Я получаю через службу HTTPService данные в xml формате. Стоит resultFormat="e4x"

Сам xml получаю такой

Код:

<requestResult xmlns="http://kasko.ntoi.ru/LightweightCalculation" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <data i:type="vehicleMarks">
    <vehicleMark>
      <id>f29eac59-45f3-4de8-98d3-953059142995</id>
      <name>Acura</name>
      <type>c33649f2-868e-42aa-8b23-e543ec63892e</type>
    </vehicleMark>
    <vehicleMark>
      <id>33050bdc-d0bd-4f24-ba70-725190ce8e00</id>
      <name>Alfa Romeo</name>
      <type>c33649f2-868e-42aa-8b23-e543ec63892e</type>
    </vehicleMark>
  </data>
  <error i:nil="true"/>
  <isSuccess>true</isSuccess>
</requestResult>

Как мне получить данные <name> </name> ?

Просто я пробовал так
Код:

requestGetMarks.lastResult.data.vehicleMark.name
Но мне выдаётся пустое значение. Хотя в примерах смотрел, что так делают и всё работало. Хочется понять, что делаю не так.

goodguy 14.06.2011 15:00

ну, если этот код грузится челез URLLoader, и присваивается переменной так:
Код AS3:

var xml:XML = XML(e.target.data)

то получить можно так:
Код AS3:

xml.data.vehicleMark.name


boriskaaa 14.06.2011 15:12

Цитата:

Сообщение от goodguy (Сообщение 1003640)
ну, если этот код грузится челез URLLoader, и присваивается переменной так:
Код AS3:

var xml:XML = XML(e.target.data)

то получить можно так:
Код AS3:

xml.data.vehicleMark.name


Пробовал и так. То же самое получается, просто пустая строка. Да и вообщем должно работать в обоих вариантах.

Astraport 14.06.2011 15:14

Хотя могу напутать по памяти примерно так:
Код AS3:

private var xmldata:XML;
  [Bindable] private var myArr:ArrayCollection=new ArrayCollection;
 
  private function resultHandler(event:ResultEvent):void{
      xmldata=event.result as XML;
 
      for each (var thexml:XML in xmldata){
 
              var obj:Object= {"id":thexml.vehicleMark.@id,
                        "name":thexml.vehicleMark.@name,
                        "type":thexml.vehicleMark.@type};
 
        myArr.addItem(obj);
      }
  }

Хотя если в FB работаете, там есть удобная панель Network monitor где можно контролировать HTTPService запросы и ответы.

boriskaaa 14.06.2011 15:27

хотя вот он пишет ещё в отладке

Код:

warning: unable to bind to property 'vehicleMark' on class 'XML' (class is not an IEventDispatcher)
warning: unable to bind to property 'name' on class 'XMLList' (class is not an IEventDispatcher)

Добавлено через 3 минуты
Цитата:

Сообщение от Astraport (Сообщение 1003645)
Хотя могу напутать по памяти примерно так:
Код AS3:

private var xmldata:XML;
  [Bindable] private var myArr:ArrayCollection=new ArrayCollection;
 
  private function resultHandler(event:ResultEvent):void{
      xmldata=event.result as XML;
 
      for each (var thexml:XML in xmldata){
 
              var obj:Object= {"id":thexml.vehicleMark.@id,
                        "name":thexml.vehicleMark.@name,
                        "type":thexml.vehicleMark.@type};
 
        myArr.addItem(obj);
      }
  }

Хотя если в FB работаете, там есть удобная панель Network monitor где можно контролировать HTTPService запросы и ответы.

Этот вариант тоже не отработал(..
Пишет
Код:

[object Object]
[object Object]


Astraport 14.06.2011 16:04

Цитата:

Этот вариант тоже не отработал(..
Пишет
Код:
[object Object]
Ну значит нужно по разному пробовать. Так напрмер:
Код AS3:

for each (var thexml:XML in xmldata.data){
 
              var obj:Object= {"id":thexml.vehicleMark.@id,
                        "name":thexml.vehicleMark.@name,
                        "type":thexml.vehicleMark.@type};
 
        myArr.addItem(obj);
      }


boriskaaa 14.06.2011 16:12

Цитата:

Сообщение от Astraport (Сообщение 1003664)
Ну значит нужно по разному пробовать. Так напрмер:
Код AS3:

for each (var thexml:XML in xmldata.data){
 
              var obj:Object= {"id":thexml.vehicleMark.@id,
                        "name":thexml.vehicleMark.@name,
                        "type":thexml.vehicleMark.@type};
 
        myArr.addItem(obj);
      }



Пробовал и так и сяк....блин...фигня какая-то...

goodguy 14.06.2011 16:34

boriskaaa, а какой у xml заголовок?
Там указана версия xml ?

Astraport 14.06.2011 16:41

да, XML какой-то неправильный.

Добавлено через 1 минуту
Загнал HTTPService с этим XML - Нетверк монитор все данные показывает. Значит нужно их просто правильно разобрать.

boriskaaa 14.06.2011 16:49

Цитата:

Сообщение от goodguy (Сообщение 1003674)
boriskaaa, а какой у xml заголовок?
Там указана версия xml ?

Так заголовок такой и есть...как в первом посте... Это из-за него всё? Если так, то я не могу его менять.
Может как-то можно его туда вставить? ...


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

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