Class XpathNodeIdentifier

  • All Implemented Interfaces:
    ComponentLifecycle, Condition, SyntaxIdentifier

    public class XpathNodeIdentifier
    extends XmlSyntaxIdentifierImpl
    SyntaxIdentifier implementation using XPATH.

    This differs from the standard XpathSyntaxIdentifier in that, rather than attempting to resolve your XPath to a text value, it simply uses the XPath to try and resolve to a Node (or NodeList). This is more useful if you have an XML document that doesn't contain any values for elements

    If the DocumentBuilderFactoryBuilder has been explicitly set to be not namespace aware and the document does in fact contain namespaces, then Saxon can cause merry havoc in the sense that //NonNamespaceXpath doesn't work if the document has namespaces in it. We have included a shim so that behaviour can be toggled based on what you have configured.

    Since 3.10.0 this class implements Condition which means that it can be used as part of the conditional services; if used in such a manner, then configuration is contextual, get/setDestination will be ignored (but may still have to be configured due to validation

    See Also:
    XPath.newXPathInstance(DocumentBuilderFactoryBuilder, NamespaceContext)

    In the adapter configuration file this class is aliased as routing-xpath-node-syntax-identifier which is the preferred alternative to the fully qualified classname when building your configuration.

    • Constructor Detail

      • XpathNodeIdentifier

        public XpathNodeIdentifier()
      • XpathNodeIdentifier

        public XpathNodeIdentifier​(java.util.List<java.lang.String> xpaths,
                                   java.lang.String dest)
    • Method Detail

      • getResolveAsNodeset

        public java.lang.Boolean getResolveAsNodeset()
      • setResolveAsNodeset

        public void setResolveAsNodeset​(java.lang.Boolean b)
        Specify whether to attempt to resolve the XPath as a Nodeset or as a single node.
        Parameters:
        b - true to attempt resolve as a Nodeset, default is false.
        See Also:
        XPathConstants.NODE, XPathConstants.NODESET
      • resolveAsNodeset

        protected boolean resolveAsNodeset()