Как применить предикат к GPath, когда я использую XMLSlurper

скажем, у меня есть следующий XML

<InvoiceLines>
            <InvoiceLine>
                <InsertionDate>29.01.2015</InsertionDate>
                <Productnbr>0102</Productnbr>
            </InvoiceLine>
            <InvoiceLine>
                <InsertionDate>29.02.2015</InsertionDate>
                <Productnbr>0103</Productnbr>
            </InvoiceLine>
</InvoiceLines>

и я хотел бы получить дату вставки InvoiceLine с Productnbr = 0103. Если бы я написал xpath, я бы написал что-то вроде:

//InvoiceLine[./Productnbr='0103']/InsertionDate

но я хотел бы использовать GPath, так как я использую XMLSlurper в своем коде. Есть ли способ применить предикат к GPath? Спасибо


person jazzyekim    schedule 02.07.2015    source источник


Ответы (1)


Вы можете использовать поиск по дереву с find, а затем получить значение его дочернего элемента:

def date = new XmlSlurper().parseText(xml)
                           .'**'
                           .find { it.Productnbr == '0103' }?.InsertionDate
person tim_yates    schedule 02.07.2015