Попробуйте это
DocumentBuilderFactory factory1 = DocumentBuilderFactory.newInstance();
DocumentBuilder builder1 = factory1.newDocumentBuilder();
XMLDOMUtil xm1 = new XMLDOMUtil();
ByteArrayInputStream bis = new ByteArrayInputStream(res.getBytes("UTF-8"));
Document document = builder1.parse(bis);
Node root = xm1.getNodeByTag(document, "soap:Envelope");
Node nextroot= xm1.getNodeByTag(root,"soap:Body");
Node nextroot1= xm1.getNodeByTag(nextroot,"soap:Fault");
String faultstring= xm1.getNodeTextByTag(nextroot1,"faultstring");
Класс XMLDOMUtil приведен ниже -
import org.w3c.dom.Node;
import org.w3c.dom.Text;
public class XMLDOMUtil {
// go thru the list of childs and find the text associated by the tag
public String getNodeTextByTag(Node parentNode, String name) {
Node node = parentNode.getFirstChild();
Text text = null;
String retStr = null;
try {
while (node != null) {
if (node.getNodeName().equals(name)) {
text = (Text) node.getFirstChild();
retStr = text.getData();
break;
}
node = node.getNextSibling();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return retStr;
}
public Node getNodeByTag(Node parentNode, String name) {
Node node = parentNode.getFirstChild();
Node retNode = null;
while (node != null) {
if (node.getNodeName().equals(name)) {
retNode = node;
break;
}
node = node.getNextSibling();
}
return retNode;
}
public Node getNextSiblingNodeByTag(Node siblingNode, String name) {
Node retNode = null;
siblingNode = siblingNode.getNextSibling();
while (siblingNode != null) {
if (siblingNode.getNodeName().equals(name)) {
retNode = siblingNode;
break;
}
siblingNode = siblingNode.getNextSibling();
}
return retNode;
}
}