insert text into another file after matching pattern

i am not sure what i should be using but would like a simple command that is able to insert a certain block of text that i define or from another text file into a xml file after a certain match is done

for e.g

insert the text 

</servlet-mapping>
<!-- beechac added - for epic post-->
<servlet>
<servlet-name>EpicUpload</servlet-name>
<servlet-class>com.practicallaw.intranet.epic.EpicUploadedFileHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EpicUpload</servlet-name>
<url-pattern>/epicUpload</url-pattern>
</servlet-mapping>

into file web.xml at the beginning or end of the tag <url-pattern> (see below)

<servlet-name>Inventory</servlet-name>
<url-pattern>/Inventory/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Satellite</servlet-name>
<url-pattern>/Satellite/*</url-pattern>
</servlet-mapping>

<!-- beechac added - for epic post-->
<servlet>
<servlet-name>EpicUpload</servlet-name>
<servlet-class>com.practicallaw.intranet.epic.EpicUploadedFileHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EpicUpload</servlet-name>
<url-pattern>/epicUpload</url-pattern>
</servlet-mapping>

<mime-mapping>
<extension>chm</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>

Keep the text to ad in a seperate file, and then perhaps something like:

if [ <condition> ]; then 
    cat <file with text> >> <destination>;
fi

Else do somethign like:

sed 's/<!-- beechac added - for epic post-->/\
<servlet>\n\
<servlet-name>EpicUpload<\/servlet-name>\n\
<servlet-class>com.practicallaw.intranet.epic.EpicUploadedFileHandler<\/servlet-class>\n\
</servlet>\n\
<servlet-mapping>\n\
<servlet-name>EpicUpload<\/servlet-name>\n\
<url-pattern>/epicUpload<\/url-pattern>\n\
<\/servlet-mapping>/g'

on the file

the last command is a global replace, i'm looking to do an insert after the first patterm match of </servlet-mapping> after which i insert a block of text.