1

我有一个从服务器接收动态 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>

我想知道如何/是否可以将这些数据转换为 arraycollection 中的类型值,如下所示:

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

提前致谢

4

1 回答 1

2

是的,我认为你可以做到这一点。看看这是否有帮助:

 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;
}

于 2010-02-02T07:34:08.170 回答