Assuming that the XML document actually has a root tag (your XML does not and is therefore not well formed), then you may use XMLstarlet like this:
xmlstarlet sel -t -m '//ID[. = 2]' \
-c . -c './following-sibling::*[position()<5]' -nl file.xml
For the given data (modified to insert <root> at the start and </root> at the end), this would return
<ID>2</ID><data>asdf</data><data2>asdf</data2><dataX>asdf</dataX><dateAccessed>somedate</dateAccessed>
The XMLstarlet query selects any ID node whose contents is 2 (-m '//ID[. = 2]'). For each of these nodes (only one in the given data), it returns a copy of the node itself (-c .) along with a copy of the following five sibling nodes (-c './following-sibling::*[position()<5]'), ending the output by inserting a newline (-nl).
The <root> start and end tags could be inserted into the document itself, or be handed to XMLstarlet like so:
{ echo '<root>'; cat file.xml; echo '</root>'; } |
xmlxmlstarlet sel -t -m '//ID[. = 2]' \
-c . -c './following-sibling::*[position()<5]' -nl