Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Суммирование значений в одинаковых тегах / 7 сообщений из 7, страница 1 из 1
14.11.2007, 11:34
    #34937722
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
Всем привет. Помогите решить простенькую задачку.
У меня есть теги PAC:
Код: plaintext
1.
2.
3.
4.
*********
<PAC kol_pac="38" pac="20" ves="125879"/>
<PAC kol_pac="3" pac="21"/>
<PAC kol_pac="10" pac="20"/>
********
Мне необходимо проанализировать их и если они равны по pac(на пример pac="20"), то необходимо все аттр. сложить. Результат должен быть:
Код: plaintext
1.
2.
3.
*********
<PAC kol_pac="48" pac="20" ves="125879"/>
<PAC kol_pac="3" pac="21"/>
********
Может можно как то без массива?
Я пробовала:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
nodePac = XPathAPI.selectNodeIterator(document,"//UZ-XDOC/BODY/OTPR/PAC/@pac"); 
         nodeKol_Pac = XPathAPI.selectNodeIterator(document,"//UZ-XDOC/BODY/OTPR/PAC/@kol_pac"); 
         Kol_Pac =  null ;
         Pac =  null ;
         NodeIterator nodePAC = XPathAPI.selectNodeIterator(document,
         "//UZ-XDOC/BODY/OTPR/PAC"); 
         Node PAC;
          while ((PAC = nodePAC.nextNode()) !=  null )
         {
           Node P = XPathAPI.selectSingleNode(document,"//UZ-XDOC/BODY/OTPR/PAC"); 
            if ((Pac = nodePac.nextNode()) !=  null )
           {
               pac = Integer.parseInt(Pac.getNodeValue());
           }
             else 
            {
               pac =  0 ;
            }
             if ((Kol_Pac = nodeKol_Pac.nextNode()) !=  null )
            {
               kol_pac = Integer.parseInt(Kol_Pac.getNodeValue());
            }
             else 
            {
               kol_pac =  0 ;
            }
             if  (pac==k_pac)
            {
               kol_pac+= n_kol;
               System.out.println(pac + "   " + kol_pac);
            }
            k_pac = pac;
            n_kol = kol_pac;
         }
но так сравниваются только два рядом стоящих тега
...
Рейтинг: 0 / 0
20.11.2007, 00:51
    #34950450
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
авторно так сравниваются только два рядом стоящих тега
а вы отсортируйте по пакам и тогда сможете сравнивать рядомстоящие теги и возможно получите мечтаемый результат
...
Рейтинг: 0 / 0
20.11.2007, 08:13
    #34950600
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
Можно попробовать так:
Код: plaintext
sum(ancestor::PAC[@pac="20"])
хотя врядли... так вроде суммирует токо значение между откр. и закр. тегом ,а не в атрибуте..
Возможно вот так:
Код: plaintext
sum(ancestor::PAC[@pac="20"])/@kol_pac
Но не факт
...
Рейтинг: 0 / 0
20.11.2007, 14:25
    #34952008
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
Огромное спасибо!!
...
Рейтинг: 0 / 0
20.11.2007, 14:26
    #34952012
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
Чтобы просуммировать жабой, нужно просто пройтись по всем нодам по порядку, вести словать pac=>сумма и суммировать. XPath'ом просуммировать за один присест по-моему не получится.
...
Рейтинг: 0 / 0
20.11.2007, 14:34
    #34952060
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
NodeIterator ipac = XPathAPI.selectNodeIterator(document,"//UZ-XDOC/BODY/OTPR/PAC"); 
Node pac;
 while ((pac = ipac.nextNode()) !=  null )
{
  int  kol = Integer.parseInt(pac.getAttribute("kol_pac"));
 string strpac = pac.getAttribute("pac");
 dic[strpac]+=kol;
}
...
Рейтинг: 0 / 0
20.11.2007, 15:11
    #34952232
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений в одинаковых тегах
Спасибочки!!!!
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Суммирование значений в одинаковых тегах / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]