0

2 つの xml ファイルがありますが、欠陥があります。xml および employee.xml です。ただし、ファイルには共通のフィールドがありますが、ファイルごとに名前が異なります。両方のファイルを 1 つの配列コレクションにマージしたいと考えています。

私の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>

2 つの配列コレクションで両方の 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 の assignedTo と employeeList の employeeName の 2 つのフィールドを比較できるようになりました。Simon に感謝します。

 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 をデータグリッド n 表示従業員 ID のデータプロバイダーとして使用できるようにするにはどうすればよいでしょうか? 誰かがこれで私を助けることができますか?

解決

私は解決策を見つけました。コードは次のとおりです。

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 として datagrid で datafield を「employeeId」として指定すると、対応する従業員名の従業員 ID が取得されます。

4

1 に答える 1

1

部分的にお答えでき...

ArrayCollection を反復処理するのは簡単です...

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

反復するときに配列の内容をぶら下げている場合は、ForEach のような反復子に注意する必要があります。3 番目のアレイをロードすることを検討することをお勧めします。

コード スニペットで作成された XML オブジェクトから要素の値を取得する方法は正確にはわかりませんが、Adobe Livedocsには多くのヘルプがあります。

オブジェクトがそのフィールドを遅延バインドされた方法で参照できるという事実を利用できるかもしれません...

var elementContents:String = employee["employeeName"];
于 2009-10-27T13:22:49.637 に答える