Нужен запрос GPath, чтобы найти максимальную дату + строковое поле - PullRequest
0 голосов
/ 11 сентября 2018

Нужен способ поиска записи с максимальной датой + значение == "001"

Если я сделаю это, чтобы найти запись с максимальной датой + значением == "001", она не будет работать. Есть ли способ сделать комбинированный запрос?

def xmls = new XmlSlurper().parse(new File("C:/file.xml"));
Object oTest = xmls.Test.Entry.find{ v -> v.Value == "001" }.max{ d -> 
Date.parse('MM/dd/yyyy', d.Date.toString()) 

Пример ввода xml:

<Test>
<Entry>
   <Date>01/12/2017</Date>
   <Value>001</Value>
</Entry>
<Entry>
   <Date>02/15/2017</Date>
   <Value>001</Value>
</Entry>
<Entry>
   <Date>03/15/2017</Date>
   <Value>002</Value>
</Entry>
</Test>

Вывод мне нужен:

Date>02/15/2017</Date>
<Value>001</Value>

1 Ответ

0 голосов
/ 11 сентября 2018
def xmls = new XmlSlurper().parseText('''<Test>
<Entry>
   <Date>01/12/2017</Date>
   <Value>001</Value>
</Entry>
<Entry>
   <Date>02/15/2017</Date>
   <Value>001</Value>
</Entry>
<Entry>
   <Date>03/15/2017</Date>
   <Value>002</Value>
</Entry>
</Test>''');

Object oTest = xmls.Entry.findAll{ v -> v.Value == "001" }.max{ d -> Date.parse('MM/dd/yyyy', d.Date.toString()) }
println groovy.xml.XmlUtil.serialize(oTest)

результат:

<?xml version="1.0" encoding="UTF-8"?>
<Entry>
  <Date>02/15/2017</Date>
  <Value>001</Value>
</Entry>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...