import javax.xml.xpath.XPathFactory import org.xml.sax.InputSource def xmlString = ''' <root> <OfferItem> <OfferItemID>wanted_id_1</OfferItemID> <Service> <ServiceDetails> <PaxJourneyRefID>PJ1</PaxJourneyRefID> </ServiceDetails> </Service> <Service> <ServiceDetails> <ServiceDetailsRef> <PSRID>S1</PSRID> <ServiceID>SR_YES</ServiceID> </ServiceDetailsRef> </ServiceDetails> </Service> </OfferItem> <OfferItem> <OfferItemID>not_id_1</OfferItemID> <Service> <ServiceDetails> <PaxJourneyRefID>PJ1</PaxJourneyRefID> </ServiceDetails> </Service> <Service> <ServiceDetails> <ServiceDetailsRef> <PSRID>S1</PSRID> <ServiceID>SR_NO</ServiceID> </ServiceDetailsRef> </ServiceDetails> </Service> </OfferItem> </root> ''' // Create XPath expression def xpath = "//OfferItem[Service/ServiceDetails/ServiceDetailsRef/ServiceID='SR_YES']/OfferItemID/text()" // Create XPath object def xpathInstance = XPathFactory.newInstance().newXPath() // Evaluate XPath expression def offerItemId = xpathInstance.evaluate(xpath, new InputSource(new StringReader(xmlString))) println "OfferItemID: $offerItemId" assert offerItemId == 'wanted_id_1'