Revert removal of the SAP module

This reverts commit 26da7a6ee77490136e491dc8b6d3b99261ddc844.
Rework parse_xml

We try to avoid using Nokogiri in modules due to the sometimes
uncomfortable dependencies it creates with particular compiled libxml
versions. Also, the previous parse_xml doesn't seem to be correctly
skipping item entries with blank names.

I will paste the test XML in the PR proper, but do check against a live
target to make sure I'm not screwing it up.
Land #1788, @todb's switch from nokogiri to rexml