def xmlString = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SearchRS>
    <SearchStatus>SUCCESS</SearchStatus>
    <Itinerary>
        <Name>Joe</Name>
        <Ticket>111.11</Ticket>
        <Taxes>1.11</Taxes>
    </Itinerary>
    <Itinerary>
        <Name>Bob</Name>
        <Ticket>222.22</Ticket>
        <Taxes>2.22</Taxes>
    </Itinerary>
    <Itinerary>
        <Name>Joe</Name>
        <Ticket>333.33</Ticket>
        <Taxes>3.33</Taxes>
        </Itinerary>
    <Itinerary>
    <Itinerary>
        <Name>Bob</Name>
        <Ticket>444.44</Ticket>
        <Taxes>4.44</Taxes>
    </Itinerary>
        <Name>Joe</Name>
        <Ticket>0.0</Ticket>
        <Taxes>0.0</Taxes>
    </Itinerary>
</SearchRS>"""

def xml = new XmlSlurper().parseText(xmlString)
def names = xml.'**'.findAll {it.name() == 'Name'}.unique()
def map = [:]
names.each { name -> 
   map[name] = xml.'**'.findAll {it.name() == 'Itinerary' && name == it.Name.text() }.collect { Double.parseDouble(it.Ticket.text()) + Double.parseDouble(it.Taxes.text())}.findAll {it}.with { sum() / size() }
}
println map