2010-05-10 7 views
1

script.php мой возвращает этот XMLне анализирует XML, когда это единственный узел

<all> 
    <item> 
    <field1>value1</field1> 
    <field2>value2</field2> 
    </item> 

    <item> 
    <field1>value1</field1> 
    <field2>value2</field2> 
    </item> 
</all> 

HTTPService использует по умолчанию resultFormat="object", но я не заявляю это, так как это по умолчанию.

Тогда я привязать его к List

dataProvider="{getDataHTTP.lastResult.all.item}" 

я не получаю никаких проблем, когда количество item возвращенного больше, чем 1. Но когда это только 1 item я получаю сообщение об ошибке не может преобразовать XMLList Мх. collections.IList.

Я пробовал различные решения, в том числе пытаюсь использовать его как XMLListCollection, но он по-прежнему дает ошибку для отдельных элементов. Кто-нибудь знает, как это возможно решить?

ответ

2

Сделать resultFormat="xml" и установить dataProvider="{getDataHTTP.lastResult.item}"

+0

К сожалению не работает. Когда я это делаю, я вообще не получаю вывода, даже в случае нескольких 'item'. Потянув за волосы мои волосы. – tag

+0

@tag try 'resultFormat =" e4x "' – Amarghosh

+0

@tag: Я думаю, проблема в том, что XML не является связываемым. вы, вероятно, даже получите предупреждение во время выполнения, что привязка не может быть создана. Как сказал Amargosh, вам нужно указать формат, чтобы flex мог обернуть его в некоторые связующие прокси. – back2dos

1
import mx.rpc.xml.SimpleXMLDecoder; 
import mx.rpc.xml.SimpleXMLEncoder; 

[Bindable]public var xmlDataObj:Object = new Object(); 

private function yourResultEvent(evt:ResultEvent):void{ 
var resultXml:XMLDocument = new XMLDocument(evt.result as String); 
var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); 
xmlDataObj= decoder.decodeXML(resultXml).all.item; 
} 

Таким образом, вам не нужно беспокоиться о смене resultFormat в XML или e4x.