2010-02-02 84 views
1

我有一個從服務器接收動態XML數據的應用程序。 XML的結構是動態的,標籤/屬性名稱無法預測。沒有行項可以硬編碼。數據從數據庫返回(想象列和行),數據的類型在服務器端是已知的。以下僅僅是一個例子,僅表示數據如何返回的結構。Flex 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> 

我想知道如何/如果我能得到這些數據轉化爲類型的值在這樣一個ArrayCollection:提前

回答

2

public var arr:ArrayCollection = new ArrayCollection(
    [firstName:"Chris", lastName:"McDonald", age:24], ...); // Note that age is an integer, not a string 

由於是的,我認爲你可以做到這一點。看看這是否有幫助:

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 ([email protected] == "String") { 
     obj[column.localName()] = [email protected]; 
    }else if([email protected] = "Integer") { 
     obj[column.localName()] = int([email protected]); 
    } 
    } 
    return obj; 
}