Объединение узлов XML в один на основе ключа - PullRequest
0 голосов
/ 23 апреля 2009

У меня есть XML-файл, который содержит несколько узлов, которые имеют детей. Если узлы имеют одинаковые ключи, их дочерние элементы должны быть объединены в один узел.

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

Две записи здесь имеют одинаковые даты. Как я могу объединить их в один? У меня есть список из них как пары ключ / значение.

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

}

1 Ответ

0 голосов
/ 23 апреля 2009

Вы должны проверить наличие повторов, прежде чем добавлять в списокдуемый список. Вы можете написать функцию, которая перебирает вдущий список, получает его и сопоставляет его с той, которую вы собираетесь добавить. Сколько записей может быть в списке вообще. Потому что вам придется учитывать факторы эффективности, если обход звука кажется дорогостоящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...