It's only really slow once the XML gets big and can't fit in memory.
When the structure of the XML changes all bets are off. Each module and especially each way you use that module will allow for some changes to go unnoticed, some to break the script and some to cause incorrect results. Including of course XML::LibXML and XPath. There are types of changes that are more likely to force you to change something if you use one module and get away with old script if you use another, but if the XML changes you should ALWAYS review the change and your script and make sure it still works and still returns the right data.
Enoch was right!
Enjoy the last years of Rome.
<code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>