@Override protected List<DomElement> provideElements() { final List<DomElement> res = new LinkedList<>(); final boolean caseSensitive = hasCaseSensitiveTagNames(); for (final DomElement elem : getDomElementDescendants()) { final String localName = elem.getLocalName(); if ("*".equals(tagName) || localName.equals(tagName) || (!caseSensitive && localName.equalsIgnoreCase(tagName))) { res.add(elem); } } return res; } };
@Override protected List<DomElement> provideElements() { final List<DomElement> res = new LinkedList<>(); final boolean caseSensitive = hasCaseSensitiveTagNames(); for (final DomElement elem : getDomElementDescendants()) { final String localName = elem.getLocalName(); if ("*".equals(tagName) || localName.equals(tagName) || (!caseSensitive && localName.equalsIgnoreCase(tagName))) { res.add(elem); } } return res; } };
/** * {@inheritDoc} */ @Override public String getLocalName() { final boolean caseSensitive = getPage().hasCaseSensitiveTagNames(); if (!caseSensitive && XPathUtils.isProcessingXPath()) { // and this method was called from Xalan return localName_.toLowerCase(); } return localName_; }
/** * {@inheritDoc} */ @Override public String getLocalName() { final boolean caseSensitive = getPage().hasCaseSensitiveTagNames(); if (!caseSensitive && XPathUtils.isProcessingXPath()) { // and this method was called from Xalan return localName_.toLowerCase(); } return localName_; }
/** * {@inheritDoc} */ @Override public String getLocalName() { final boolean caseSensitive = getPage().hasCaseSensitiveTagNames(); if (!caseSensitive && XPathUtils.isProcessingXPath()) { // and this method was called from Xalan return localName_.toLowerCase(); } return localName_; }
/** * {@inheritDoc} */ @Override public String getLocalName() { final boolean caseSensitive = getPage().hasCaseSensitiveTagNames(); if (!caseSensitive && XPathUtils.isProcessingXPath()) { // and this method was called from Xalan return localNameLC_; } return localName_; }
/** * {@inheritDoc} */ @Override public String getLocalName() { final boolean caseSensitive = getPage().hasCaseSensitiveTagNames(); if (!caseSensitive && XPathUtils.isProcessingXPath()) { // and this method was called from Xalan return localNameLC_; } return localName_; }
@Override protected List<DomElement> provideElements() { final List<DomElement> res = new LinkedList<>(); final Comparator<String> comparator; if (hasCaseSensitiveTagNames()) { comparator = Comparator.nullsFirst(String::compareTo); } else { comparator = Comparator.nullsFirst(String::compareToIgnoreCase); } for (final DomElement elem : getDomElementDescendants()) { final String locName = elem.getLocalName(); if (("*".equals(namespaceURI) || comparator.compare(namespaceURI, elem.getNamespaceURI()) == 0) && ("*".equals(locName) || comparator.compare(locName, elem.getLocalName()) == 0)) { res.add(elem); } } return res; } };
@Override protected List<DomElement> provideElements() { final List<DomElement> res = new LinkedList<>(); final Comparator<String> comparator; if (hasCaseSensitiveTagNames()) { comparator = Comparator.nullsFirst(String::compareTo); } else { comparator = Comparator.nullsFirst(String::compareToIgnoreCase); } for (final DomElement elem : getDomElementDescendants()) { final String locName = elem.getLocalName(); if (("*".equals(namespaceURI) || comparator.compare(namespaceURI, elem.getNamespaceURI()) == 0) && ("*".equals(locName) || comparator.compare(locName, elem.getLocalName()) == 0)) { res.add(elem); } } return res; } };
/** * Evaluates an XPath expression to an XObject. * @param contextNode the node to start searching from * @param str a valid XPath string * @return an XObject, which can be used to obtain a string, number, nodelist, etc (should never be <tt>null</tt>) * @throws TransformerException if a syntax or other error occurs */ private static XObject evaluateXPath(final DomNode contextNode, final String str) throws TransformerException { final XPathContext xpathSupport = new XPathContext(); final Node xpathExpressionContext; if (contextNode.getNodeType() == Node.DOCUMENT_NODE) { xpathExpressionContext = ((Document) contextNode).getDocumentElement(); } else { xpathExpressionContext = contextNode; } final PrefixResolver prefixResolver = new HtmlUnitPrefixResolver(xpathExpressionContext); final boolean caseSensitive = contextNode.getPage().hasCaseSensitiveTagNames(); final XPathAdapter xpath = new XPathAdapter(str, null, prefixResolver, null, caseSensitive); final int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode); return xpath.execute(xpathSupport, ctxtNode, prefixResolver); }
/** * Evaluates an XPath expression to an XObject. * @param contextNode the node to start searching from * @param str a valid XPath string * @return an XObject, which can be used to obtain a string, number, nodelist, etc (should never be <tt>null</tt>) * @throws TransformerException if a syntax or other error occurs */ private static XObject evaluateXPath(final DomNode contextNode, final String str) throws TransformerException { final XPathContext xpathSupport = new XPathContext(); final Node xpathExpressionContext; if (contextNode.getNodeType() == Node.DOCUMENT_NODE) { xpathExpressionContext = ((Document) contextNode).getDocumentElement(); } else { xpathExpressionContext = contextNode; } final PrefixResolver prefixResolver = new HtmlUnitPrefixResolver(xpathExpressionContext); final boolean caseSensitive = contextNode.getPage().hasCaseSensitiveTagNames(); final XPathAdapter xpath = new XPathAdapter(str, null, prefixResolver, null, caseSensitive); final int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode); return xpath.execute(xpathSupport, ctxtNode, prefixResolver); }
/** * Evaluates an XPath expression to an XObject. * @param contextNode the node to start searching from * @param str a valid XPath string * @return an XObject, which can be used to obtain a string, number, nodelist, etc (should never be <tt>null</tt>) * @throws TransformerException if a syntax or other error occurs */ private static XObject evaluateXPath(final DomNode contextNode, final String str) throws TransformerException { final XPathContext xpathSupport = new XPathContext(); final Node xpathExpressionContext; if (contextNode.getNodeType() == Node.DOCUMENT_NODE) { xpathExpressionContext = ((Document) contextNode).getDocumentElement(); } else { xpathExpressionContext = contextNode; } final PrefixResolver prefixResolver = new HtmlUnitPrefixResolver(xpathExpressionContext); final boolean caseSensitive = contextNode.getPage().hasCaseSensitiveTagNames(); final XPathAdapter xpath = new XPathAdapter(str, null, prefixResolver, null, caseSensitive); final int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode); return xpath.execute(xpathSupport, ctxtNode, prefixResolver); }
/** * Evaluates an XPath expression to an XObject. * @param contextNode the node to start searching from * @param str a valid XPath string * @param a prefix resolver to use for resolving namespace prefixes, or null * @return an XObject, which can be used to obtain a string, number, nodelist, etc (should never be {@code null}) * @throws TransformerException if a syntax or other error occurs */ private static XObject evaluateXPath(final DomNode contextNode, final String str, final PrefixResolver prefixResolver) throws TransformerException { final XPathContext xpathSupport = new XPathContext(); final Node xpathExpressionContext; if (contextNode.getNodeType() == Node.DOCUMENT_NODE) { xpathExpressionContext = ((Document) contextNode).getDocumentElement(); } else { xpathExpressionContext = contextNode; } PrefixResolver resolver = prefixResolver; if (resolver == null) { resolver = new HtmlUnitPrefixResolver(xpathExpressionContext); } final boolean caseSensitive = contextNode.getPage().hasCaseSensitiveTagNames(); final boolean attributeCaseSensitive = caseSensitive || contextNode.getPage().getWebClient() .getBrowserVersion().hasFeature(XPATH_ATTRIBUTE_CASE_SENSITIVE); final XPathAdapter xpath = new XPathAdapter(str, null, resolver, null, caseSensitive, attributeCaseSensitive); final int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode); return xpath.execute(xpathSupport, ctxtNode, prefixResolver); }
/** * Evaluates an XPath expression to an XObject. * @param contextNode the node to start searching from * @param str a valid XPath string * @param a prefix resolver to use for resolving namespace prefixes, or null * @return an XObject, which can be used to obtain a string, number, nodelist, etc (should never be {@code null}) * @throws TransformerException if a syntax or other error occurs */ private static XObject evaluateXPath(final DomNode contextNode, final String str, final PrefixResolver prefixResolver) throws TransformerException { final XPathContext xpathSupport = new XPathContext(); final Node xpathExpressionContext; if (contextNode.getNodeType() == Node.DOCUMENT_NODE) { xpathExpressionContext = ((Document) contextNode).getDocumentElement(); } else { xpathExpressionContext = contextNode; } PrefixResolver resolver = prefixResolver; if (resolver == null) { resolver = new HtmlUnitPrefixResolver(xpathExpressionContext); } final boolean caseSensitive = contextNode.getPage().hasCaseSensitiveTagNames(); final boolean attributeCaseSensitive = caseSensitive || contextNode.getPage().getWebClient() .getBrowserVersion().hasFeature(XPATH_ATTRIBUTE_CASE_SENSITIVE); final XPathAdapter xpath = new XPathAdapter(str, null, resolver, null, caseSensitive, attributeCaseSensitive); final int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode); return xpath.execute(xpathSupport, ctxtNode, prefixResolver); }