You can try this:
c="$(sed -n '\#<dsa>#,\#</dsa>#p' file | sed 's#<dsa>\|</dsa>##')"
sed -e "s#<asd>.*</asd>#<asd>${c//$'\n'/\\n}</asd>#" -e '\#<dsa>#,\#</dsa>#c<dsa></dsa>' file
c="$(sed -n '\#<dsa>#,\#</dsa>#p' file | sed 's#<dsa>\|</dsa>##')"
sed -e "s#<asd>.*</asd>#<asd>${c//$'\n'/\\n}</asd>#" -e '\#<dsa>#,\#</dsa>#c<dsa></dsa>' file
Output:
<asd>-some stuff
-other stuff
final stuff.</asd>
<dsa></dsa>
Fetch the contents between 'dsa' tags:
c="$(sed -n '\#<dsa>#,\#</dsa>#p' file | sed 's#<dsa>\|</dsa>##')"
Insert the content into 'asd' tags:
sed -e "s#<asd>.*</asd>#<asd>${c//$'\n'/\\n}</asd>#"
Change 'dsa' tags and content to just <dsa></dsa>
'\#<dsa>#,\#</dsa>#c<dsa></dsa>'