So in fact what you have is a root node, which is the <
string> element, and it contains text which is an entire XML document (escaped, of course, since it's in a text node)?
Then the easiest way to deal with it is to just extract that text node into a String (this step does the unescaping) and then pass it to a second DocumentBuilder object, which will parse it just like the normal XML document it is. Your root element for that document would be the <NewDataSet> element, so you would have to change your XPath a bit.