XML::DOM implements the W3C DOM (Document Object Model) level 1.
While the module is a proper implementation of the standard, IMHO the DOM is really not a great choice for generic XML processing. It is very low-level and often leads to brittle, if not outright buggy, code. It is also very verbose.
XML::LibXML is a much better choice: it also implements the DOM, amongst other standards, but it is much more powerful. Most notably its XPath engine makes the code a lot safer (and shorter). Porting code from XML::DOM to XML::LibXML seems to be quite easy BTW. XML::GDOME can also be used instead of XML::DOM.
XML::DOM is also quite old, and not actively supported, although the maintainer must be thanked for taking care of a module that he does not really use.
To be fair XML::DOM is also quite popular and pretty stable.