in reply to Search and Extract from XML when path is unknown

First of all, I would definitely say, use XPath expressions to do everything.   Use a libxml2-based Perl package.

Second, you might need to take a “branch and bound” type of approach:   use one set of expressions to carve the total data structure into big-chunks that you can iterate through, and then, within each subtree that you find, use other XPaths to find nodes-of-interest.   Having found one, your Perl logic may need to do some tree-walking to see if “these are the droids you’re looking for.”   But, let XPath do as much of the work for you as possible.