/** * Adds a namespace mapping to the current namespace context. Useful if not all namespaces * in the document being derived are known up-front. * @param prefix * @param namespaceURI */ public void addNamespaceMapping(String prefix, String namespaceURI) { ((StaticNamespaceContext) xpath.getNamespaceContext()).addMapping(prefix, namespaceURI); }
public void setNamespacePrefixes(Map<String, String> namespacePrefixes) { xpath = factory.newXPath(); xpath.setNamespaceContext(createNamespaceContext( xpath.getNamespaceContext(), namespacePrefixes)); }
public final NamespaceContext getNamespaceContext() { return getXPath().getNamespaceContext(); }
public Map<String, BindingPolicy> selectPolicies(Document xmlDocument, XPath xPath, boolean logPii) throws XPathExpressionException { String xpathExpression = "//wsdl:definitions/wsp:Policy/wsp:ExactlyOne/wsp:All/" + "sp:SignedEncryptedSupportingTokens/wsp:Policy/sp:UsernameToken/" + "wsp:Policy/sp:WssUsernameToken10"; Map<String, BindingPolicy> policies = selectUsernamePasswordPoliciesWithExpression( xmlDocument, xPath, xpathExpression, logPii); ((NamespaceContextImpl) xPath.getNamespaceContext()).modifyNameSpace("sp", "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"); xpathExpression = "//wsdl:definitions/wsp:Policy/wsp:ExactlyOne/wsp:All/" + "sp:SignedSupportingTokens/wsp:Policy/sp:UsernameToken/" + "wsp:Policy/sp:WssUsernameToken10"; policies.putAll(selectUsernamePasswordPoliciesWithExpression( xmlDocument, xPath, xpathExpression, logPii)); return policies; } }
public Map<String, BindingPolicy> selectPolicies(Document xmlDocument, XPath xPath, boolean logPii) throws XPathExpressionException { String xpathExpression = "//wsdl:definitions/wsp:Policy/wsp:ExactlyOne/wsp:All/" + "sp:SignedEncryptedSupportingTokens/wsp:Policy/sp:UsernameToken/" + "wsp:Policy/sp:WssUsernameToken10"; Map<String, BindingPolicy> policies = selectUsernamePasswordPoliciesWithExpression( xmlDocument, xPath, xpathExpression, logPii); ((NamespaceContextImpl) xPath.getNamespaceContext()).modifyNameSpace("sp", "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"); xpathExpression = "//wsdl:definitions/wsp:Policy/wsp:ExactlyOne/wsp:All/" + "sp:SignedSupportingTokens/wsp:Policy/sp:UsernameToken/" + "wsp:Policy/sp:WssUsernameToken10"; policies.putAll(selectUsernamePasswordPoliciesWithExpression( xmlDocument, xPath, xpathExpression, logPii)); return policies; } }
@Override public final Impl xpath(String expression, Object... variables) { List<Element> result = new ArrayList<Element>(); try { XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); // Add the xalan ExtensionNamespaceContext if Xalan is available Util.xalanExtensionAware(xpath); // Add a variable resolver if we have any variables if (variables != null && variables.length != 0) xpath.setXPathVariableResolver(new VariableResolver(expression, variables)); // [#9] Chain namespace contexts, in case namespaces could be needed if (!namespaces.isEmpty() || expression.contains(":")) xpath.setNamespaceContext(new ChainedContext(xpath.getNamespaceContext())); XPathExpression exp = xpath.compile(expression); for (Element element : get()) for (Element match : iterable((NodeList) exp.evaluate(element, XPathConstants.NODESET))) result.add(match); } catch (XPathExpressionException e) { throw new RuntimeException(e); } return new Impl(document, namespaces).addUniqueElements(result); }