powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XPathAPI.select
12 сообщений из 12, страница 1 из 1
XPathAPI.select
    #34571443
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XX_78Подскажите, пожалуйста, как лучше сделать.
У меня есть XSL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...............
<segment Id="LOC">
<element Id="LOC01"> 42 </element>
<element Id="LOC02" Composite="yes">
<subelement Id="LOC02" Composite="yes" Sequence="1"> 22399201 </subelement>
</element>
</segment>
..................
<segment Id="LOC">
<element Id="LOC01"> 42 </element>
<element Id="LOC02" Composite="yes">
<subelement Id="LOC02" Composite="yes" Sequence="1"> 22777777 </subelement>
<subelement Sequence="2"> 37 </subelement>
</element>
</segment>
................
Я использую:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
NodeIterator TEST = XPathAPI.selectNodeIterator(documentSource,"//transaction/segment[@Id='LOC' and element[@Id='LOC01']='42']/element[@Id='LOC02']/subelement[@Id='LOC02']/text()"); 
Node test;
         while  ((test = TEST.nextNode())!= null )
        {
           Test = test.getNodeValue();
           Test_42 = Test.substring( 0 , 2 );
                      
            if  (Integer.parseInt(Test_42) ==  22  )
           {
              System.out.println("nom_pp = " + n + " Test = " + (Test.substring( 2 )));
              n++;
           }
}
и получаю результат:
Код: plaintext
1.
2.
3.
nom_pp =  0  Test =  399201 
nom_pp =  1  Test =  405050 
nom_pp =  2  Test =  777777 
А мне в JAVA, необходимо получить показатель равный 777777.
...
Рейтинг: 0 / 0
XPathAPI.select
    #34571673
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чего?
поставь еще одно условие которое будет сравнивать текущее выводимое значение с 777777
Или по умному надо?
...
Рейтинг: 0 / 0
XPathAPI.select
    #34571746
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо, по умному. Может, можно как-то не через selectNodeIterator, а через selectSingleNode (как-то прописав в пути, что substring(element[@Id='LOC02']/subelement[@Id='LOC02'])='22' и позиция должна быть последней)?
...
Рейтинг: 0 / 0
XPathAPI.select
    #34571771
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если твои семерки будут не последними?
Ты определись тебе последнее значение или шесть семерок вывести.
...
Рейтинг: 0 / 0
XPathAPI.select
    #34571776
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прости, не грамотно сформулировала вопрос, мне надо последнее значение
...
Рейтинг: 0 / 0
XPathAPI.select
    #34572521
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, уже сама разобралась.
...
Рейтинг: 0 / 0
XPathAPI.select
    #34572530
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покаж как сделал, чтоб потом на тему посылать
...
Рейтинг: 0 / 0
XPathAPI.select
    #34572705
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
NodeIterator TEST = XPathAPI.selectNodeIterator(documentSource,
"//transaction/segment[@Id='LOC' and element[@Id='LOC01']='42']/element[@Id='LOC02']/subelement[@Id='LOC02']/text()"); 
        Node test;
        while ((test = TEST.nextNode())!=null)
        {
           Test = test.getNodeValue();
           if (Integer.parseInt(Test.substring( 0 , 2 )) ==  22 )
           {
              ll.add(new String(Test));
           }
          n++;
        }
        System.out.println(" Arr = " + ll.getLast().toString().substring( 2 ));

Может можно как-то по проще, но я не знаю как.
...
Рейтинг: 0 / 0
XPathAPI.select
    #34573439
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
последний segment?
//transaction/segment[@Id='LOC' and element[@Id='LOC01']='42'] [last()] /element[@Id='LOC02']/subelement[@Id='LOC02']/text()
...
Рейтинг: 0 / 0
XPathAPI.select
    #34574220
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там должен быть последний сегмент, но при условии, что в subelement - те первые 2 цыфры будут = 22
...
Рейтинг: 0 / 0
XPathAPI.select
    #34577050
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну почти всё было написано

//transaction/segment[@Id='LOC' and element[@Id='LOC01']='42' and starts-with(element[@Id='LOC02']/subelement[@Id='LOC02'],'22')][last()]/ element[@Id='LOC02']/subelement[@Id='LOC02']/text()
...
Рейтинг: 0 / 0
XPathAPI.select
    #34577104
XX_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПАСИБО ОГРОМНОЕ!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XPathAPI.select
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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