2009-04-23 22 views
-2

子を持つ複数のノードを含むXMLファイルがあります。ノードが同じキーを持つ場合、その子は1つのノードにマージする必要があります。キーに基づいてXMLノードを1つにマージする

<availexport> 
    <date>090423121513</date> 
    <employee emp_cd="9120004"> 
    <day date="20050406" start="10" end="20"/> 
    <day date="20050406" start="21" end="23"/> 
    <day date="20050511" start="12" end="23"/> 
    </employee> 
    <records>3</records> 
</availexport> 

2つのレコードの日付は同じです。どのようにそれらを1つにマージできますか?私はキー/値のペアとしてこれらのリストを持っています。

for (int k = this.employeesList.size(); k > 0; k--) { 
    Map empInfo1 = new HashMap(); 
    Map empInfo = (Map) this.employeesList.remove(0); 
    this.empID = (Long) empInfo.get(EMP_ID); 
    this.hrID = (String) empInfo.get(HR_EMP_ID); 
    this.avail_iDate = (Long) empInfo.get(AVAIL_IDATE); 
    this.start_ITime = (Long) empInfo.get(START_ITIME); 
    this.end_ITime = (Long) empInfo.get(END_ITIME); 
    List availList = new ArrayList(); 
    Map availList1 = new HashMap(); 
    if (empAvailRecord.containsKey(empID)) { 
     empInfo1 = (Map) empAvailRecord.get(empID); 
     availList = (List) empInfo1.get("DAY"); 
     availList1.put(AVAIL_IDATE, avail_iDate); 
     availList1.put(START_ITIME, start_ITime); 
     availList1.put(END_ITIME, end_ITime); 
     availList.add(availList1); 
    } else { 

     availList1.put(AVAIL_IDATE, avail_iDate); 
     availList1.put(START_ITIME, start_ITime); 
     availList1.put(END_ITIME, end_ITime); 
     availList.add(availList1); 

     empInfo1.put("HR_ID", hrID); 
     empInfo1.put("DAY", availList); 
     empAvailRecord.put(empID, empInfo1); 
    } 

} 
+0

ここに実際に質問はありませんか? – AnthonyWJones

+0

いいえ私は詳細を説明したいので、コードを貼り付けて詳細に説明したかった 2つの重複ノードを1つにマージする簡単な方法 – GustyWind

答えて

0

availList1をavailListに追加する前に、反復を確認する必要があります。 availListをたどり、avail_idateを取得し、追加しようとしているものと一致させる関数を書くことができます。 リストには、一般的にどのくらいのレコードを入れることができますか。トラバース音が高価な場合は、パフォーマンスの要素を考慮する必要があるためです。

+0

ええ、私はリストをトラバースするというアイデアを持っていましたが、リストが増加します。 – GustyWind

関連する問題