Have a look at eval 's urldecode function.
<yourbasesearch> | eval urldecodedtext=urldecode(_raw)
This will take the _raw field's contents, URL decode it and put the result in the field urldecodedtext . More info om the urldecode function here:
http://www.splunk.com/base/Documentation/latest/SearchReference/CommonEvalFunctions
As for your question 1, there is a search command called xmlkv that automates extraction of key/value pairs in XML for you. Unfortunately it can only take the _raw field as input. You could always rewrite the _raw field yourself using urldecode as above and write the result to _raw , though it is a bit ugly. Nevertheless it works.
<yourbasesearch> | eval _raw=urldecode(_raw) | xmlkv
Regarding question 2, there's no easy one-liner way to do it that I can think of.
Question 3, you could achieve this using rex and apply it to the field codishotel . You'll have to specify how many matches rex should retrieve at most.
<yourbasesearch>
| eval _raw=urldecode(_raw)
| xmlkv
| rex max_match=50 field=codishotel "(?<codishotel_value>\d+)"
... View more