To do this in a way that's fully robust, install XMLStarlet and pipe your XML document through:
xmlstarlet ed -u //StartDt -v "$(date -d 'now + 3 weeks' +%Y%m%d)" <request.xml
To break that down:
xmlstarlet ed -u //StartDt -v "$(date -d 'now + 3 weeks' +%Y%m%d)"
# ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# | | | \- value to substitute when expression is matched
# | | \- XPath expression to match content to edit
# | \- edit subcommand
# \- generic tool for editing, selecting from, &c. XML.
//StartDt
is XPath to match all elements named StartDt
, wherever they are in the document. XPath is a quite expressive language (though libxml, the library serving the backend here, only supports the 1.0 version) -- so you can quite straightforwardly filter further.