Perhaps I am not understanding what you need, but I find it perfectly feasible to parse an XML document into a DOM and then use the DOM as the only representation of the data I need. This preserves the hierarchy of the original document and if you modify the data you can transform it back to a new XML file.
I'm not understanding either. It would help if you explained what "build a hierarchy" means.
And from your example it looks like your text nodes contain (from the XML standpoint) a hidden structure which you have to decipher. Splitting text based on a delimiter doesn't have anything to do with XML; just get the text out of the XML and do what you have to do with it.