2009-10-27 37 views
0

我有两个xml文件,缺陷。 xml和employee.xml。但文件有一个共同的字段,但在每个文件中有不同的名称。我希望将这两个文件合并到一个数组集合中。如何在flex中的单个数组集合中获取两个xml文件?

我defect.xml文件的结构是:

<defectList> 
    <defect> 
      <revId>123</revId> 
      <revType>IQA</revType> 
      <status>Review Pending</status> 
      <assignedTo>Angeline</assignedTo> 
      <loggedBy>chandran</loggedBy> 
      <closedDate>13-10-2009</closedDate> 
    </defect> 
    <defect> 
      <revId>124</revId> 
      <revType>IQA</revType> 
      <status>Review Pending</status> 
      <assignedTo>Aarthi</assignedTo> 
      <loggedBy>chandran</loggedBy> 
      <closedDate>15-10-2009</closedDate> 
    </defect> 

<defectList> 

而且我employee.xml

<Employees> 
     <employee> 
       <employeeId>256148</employeeId> 
       <employeeName>Angeline</employeeName> 
     </employee> 
     <employee> 
       <employeeId>256158</employeeId> 
       <employeeName>Aarthi</employeeName> 
     </employee> 

<Employees> 

我得到两个XML文件有两种阵列集合:

<mx:Model id="employeeXML" source="assets/employee.xml"/> 
<mx:ArrayCollection id="employeeList" source="{employeeXML.employee}"/> 

<mx:Model id="defectXML" source="assets/defect.xml"/> 
<mx:ArrayCollection id="defectList" source="{defectXML.defect}"/> 

当“assignedTo”匹配“employeeName”时,我希望“employeeId”被添加到defectList数组集合中。我怎样才能做到这一点? 如何遍历数组集合?

如何检查defectList中的assignedTo字段是否等于employeeList中的employeeName字段?有人指导我..

编辑

好了,现在我可以比较这两个领域,defectList和employeeList.Thanks的employeeName的assignedTo西蒙:

var defect:Object; 
var employee:Object; 
for each (defect in defectList) 
{ 
    for each (employee in employeeList) 
    { 
     if(defect.assignedTo == employee.employeeName) 
     { 
      // defectList.addItem(employee.employeeId); 
       // I tried this,but it is wrong . 
     } 
    } 
} 

但如何将employeeId字段添加到特定的数组元素,以便我可以使用defectList作为datagrid的显示员工ID的数据提供者?有人可以帮我弄这个吗。

SOLUTION

我已经找到了解决办法。下面是代码:

public function init():void{ 
      var defect:Object; 
      var employee:Object; 

       for each (defect in defectList) 
       { 
        for each (employee in employeeList) 
        { 
         if(defect.assignedTo == employee.employeeName) 
         { 
          var id:Object; 
          id=employee.employeeId; 
          defect["employeeId"]=id;  
         } 
        } 
       } 
     } 

现在,如果我给数据字段作为与defectList数据网格作为dataProvider,“雇员”,我得到了相应的雇员姓名的员工ID。

回答

1

我能回答的这部分...

通过迭代的ArrayCollection容易...

var defect:Object; 
var employee:Object; 
for each (defect in defectList) 
{ 
    for each (employee in employeeList) 
    { 
     // do your check here. 
    } 
} 

你必须要小心类似的ForEach迭代器,如果你是挂的内容数组迭代。你可能会考虑在你去时加载第三个数组。

我不知道你究竟是如何获得的,从你的代码中创建XML对象的元素值,但有一个很大的帮助,对Adobe Livedocs

你也许能够使用的事实,一个对象可以以后期绑定的方式引用其字段...

var elementContents:String = employee["employeeName"]; 
+0

好的,我可以比较这些元素。那就是。但是如何将字段“EmployeeId”添加到defectList数组集合中?任何想法? – Angeline 2009-10-27 13:36:16

+0

非常感谢您的帮助。我找到了解决方案:-) – Angeline 2009-10-27 14:11:47

相关问题