For this kind of thing I find XML::Simple to be, well, SIMPLE! ;)
Using REs for ML parsing is risky because so much is permissible in XML/SGML/HTML. You have to be concerned with character sets, entities, etc.
That said, I have often done it. But do take a look at XML::Simple, which answers most "trivial" cases quite well (and is built on the more robust XML libraries, so you can move to those if you need to).