/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import javax.xml.namespace.NamespaceContext;
import javax.xml.parsers.*;
import javax.xml.*;
import org.w3c.dom.*;
import javax.xml.xpath.*;
import org.xml.sax.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// javax.xml.parsers.*
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
String xml
= "<soap:Envelope xmlns:soap=\"http://w...content-available-to-author-only...3.org/2003/05/soap-envelope\">" + "<soap:Header>" +
"<context xmlns=\"urn:zimbra\"><session id=\"555\">555</session><change token=\"333\"/></context>" +
"</soap:Header>" +
"</soap:Envelope>";
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
xpath.setNamespaceContext(new NamespaceContext() {
@Override
if (prefix.equals("soap")) {
return "http://w...content-available-to-author-only...3.org/2003/05/soap-envelope";
}
if (prefix.equals("zmb")) {
return "urn:zimbra";
}
return XMLConstants.NULL_NS_URI;
}
@Override
}
@Override
}
});
XPathExpression expr =
xpath.compile("/soap:Envelope/soap:Header/zmb:context/zmb:session");
String sessionId
= (String)expr.
evaluate(doc, XPathConstants.
STRING); System.
out.
println(sessionId
); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLk5hbWVzcGFjZUNvbnRleHQ7CmltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOwppbXBvcnQgamF2YXgueG1sLio7CmltcG9ydCBvcmcudzNjLmRvbS4qOwppbXBvcnQgamF2YXgueG1sLnhwYXRoLio7CmltcG9ydCBvcmcueG1sLnNheC4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyBqYXZheC54bWwucGFyc2Vycy4qCiAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwogICAgICAgIGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7IAogICAgICAgIERvY3VtZW50QnVpbGRlciBidWlsZGVyID0gZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKICAgICAgICBTdHJpbmcgeG1sID0gIjxzb2FwOkVudmVsb3BlIHhtbG5zOnNvYXA9XCJodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uMy5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlXCI+IiArIAogICAgICAgICAgICAgICAgICAgICAiPHNvYXA6SGVhZGVyPiIgKyAKICAgICAgICAgICAgICAgICAgICAgIjxjb250ZXh0IHhtbG5zPVwidXJuOnppbWJyYVwiPjxzZXNzaW9uIGlkPVwiNTU1XCI+NTU1PC9zZXNzaW9uPjxjaGFuZ2UgdG9rZW49XCIzMzNcIi8+PC9jb250ZXh0PiIgKwogICAgICAgICAgICAgICAgICAgICAiPC9zb2FwOkhlYWRlcj4iICsKICAgICAgICAgICAgICAgICAgICAgIjwvc29hcDpFbnZlbG9wZT4iOwoKICAgICAgICBJbnB1dFNvdXJjZSBpcyA9IG5ldyBJbnB1dFNvdXJjZShuZXcgU3RyaW5nUmVhZGVyKHhtbCkpOwogICAgICAgIERvY3VtZW50IGRvYyA9IGJ1aWxkZXIucGFyc2UoaXMpOwogICAgICAgIAogICAgICAgIFhQYXRoRmFjdG9yeSB4UGF0aGZhY3RvcnkgPSBYUGF0aEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKICAgICAgICBYUGF0aCB4cGF0aCA9IHhQYXRoZmFjdG9yeS5uZXdYUGF0aCgpOwogICAgICAgIHhwYXRoLnNldE5hbWVzcGFjZUNvbnRleHQobmV3IE5hbWVzcGFjZUNvbnRleHQoKSB7CiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZVVSSShTdHJpbmcgcHJlZml4KSB7CiAgICAgICAgICAgICAgICBpZiAocHJlZml4LmVxdWFscygic29hcCIpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uMy5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChwcmVmaXguZXF1YWxzKCJ6bWIiKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidXJuOnppbWJyYSI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIFhNTENvbnN0YW50cy5OVUxMX05TX1VSSTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZml4KFN0cmluZyBuYW1lc3BhY2VVUkkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IHN1cHBvcnRlZCB5ZXQuIik7CiAgICAgICAgICAgIH0KICAKICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyBJdGVyYXRvciBnZXRQcmVmaXhlcyhTdHJpbmcgbmFtZXNwYWNlVVJJKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBzdXBwb3J0ZWQgeWV0LiIpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIFhQYXRoRXhwcmVzc2lvbiBleHByID0gCiAgICAgICAgICAgICAgIHhwYXRoLmNvbXBpbGUoIi9zb2FwOkVudmVsb3BlL3NvYXA6SGVhZGVyL3ptYjpjb250ZXh0L3ptYjpzZXNzaW9uIik7CiAgICAgICAgU3RyaW5nIHNlc3Npb25JZCA9IChTdHJpbmcpZXhwci5ldmFsdWF0ZShkb2MsIFhQYXRoQ29uc3RhbnRzLlNUUklORyk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNlc3Npb25JZCk7Cgl9Cn0=