Как заставить Flex создавать одноэлементные массивы из данных XML? - PullRequest
0 голосов
/ 02 ноября 2009

Я получаю данные XML во Flex через HttpService. У меня есть свойство resultFormat в экземпляре HttpService, установленное на HTTPService.RESULT_FORMAT_OBJECT. Результат содержит данные, подобные этому:

<!-- ... -->
<children>
  <item><!-- ... --></item>
  <item><!-- ... --></item>
  <!-- ... -->
<children>
<!-- ... -->

Я получаю массив с именем item под дочерним элементом, когда существует более одного item родного брата. Если есть только один, преобразование не может отличить его от скаляра.

Что мне нужно изменить, чтобы Flex преобразовал все item элементы в массив с 0 или более элементами?

Что мне нужно сделать, чтобы получить элемент массива children, полностью отбрасывая обертки item?

XML генерируется Struts на стороне сервера. У меня всегда есть возможность изменить структуру документа, но сейчас меня интересует, что я могу сделать с Flex.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2009

Попробуйте это:

try {
    for (var i:int = 0; /* loop forever till error is thrown */; i++) {
        var j:String = String( children.item[ i ].SomeOtherAttribute ); // if its a string
    }
} catch (re:RangeError) {
}
0 голосов
/ 03 ноября 2009

Объект item должен быть XMLList, независимо от того, существует ли одна запись или несколько. (Это будет undefined, если их нет.)

Вы можете использовать XML методы для него, если есть только один элемент, но это просто для удобства. См. документацию XMLList .

Я также рекомендую комментарий 5 к этой записи в блоге Майка Морарти (кэшированная версия, поскольку сайт кажется недоступным).

...