Динамический тип Flex XML
У меня есть приложение, которое получает динамические данные XML с сервера. Структура XML является динамической, и имена тегов / атрибутов не могут быть предсказаны. НИКАКИЕ строки не могут быть жестко закодированы. Данные возвращаются из базы данных (представьте столбцы и строки), а тип данных известен на стороне сервера. Ниже приведен только пример, только показывает структуру того, как данные возвращаются.
<dataset>
<row>
<firstName value="Chris" type="String"/>
<lastName value="McDonald" type="String"/>
<age value="24" type="Integer"/>
</row>
<row>
<firstName value="Bob" type="String"/>
<lastName value="Bourne" type="String"/>
<age value="43" type="Integer"/>
</row>
</dataset>
Мне интересно, как / если я могу получить эти данные в типизированные значения в массиве коллекций, как это:
public var arr:ArrayCollection = new ArrayCollection(
[firstName:"Chris", lastName:"McDonald", age:24], ...); // Note that age is an integer, not a string
заранее спасибо
1 ответ
Да, я думаю, что вы можете сделать это. Посмотрите, поможет ли это:
public function parseXML(datasetXML:String):ArrayCollection {
var a:Array = new Array();
var xml:XML = new XML(datasetXML);
xml.ignoreWhitespace = true;
var rows:XMLList = xml.row;
for each (var row in rows) {
a.push(getObject(row));
}
}
public function getObject(xml:XML):Object {
var obj:Object = new Object();
for each (var column in xml.elements()) {
if (column.@type == "String") {
obj[column.localName()] = column.@value;
}else if(column.@type = "Integer") {
obj[column.localName()] = int(column.@value);
}
}
return obj;
}