You probably just want to select the inner element with //outer/middle/inner/. The values in the
%ListOfObjects(CLASSNAME="%XML.XPATH.RESULT")
will be of type %XML.XPATH.DOMResult rather than %XML.XPATH.ValueResult as you have been getting. The %XML.XPATH.DOMResult values will represent a subtree of the DOM that contains both the arbitrary text nodes and the "break" nodes.
The %XML.XPATH.Document class has an Example2 method that sort of illustrates. You might want to play around with a subclass of this that overrides the "ExampleXML" XData block with some more intermediate nodes, and also copies Example2 with an XPATH expression that returns a whole subtree. That should make clear how to approach your actual more complicated problem.