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:

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 Details

    • XpathNodeIdentifier

      public XpathNodeIdentifier()
    • XpathNodeIdentifier

      public XpathNodeIdentifier(List<String> xpaths, String dest)
  • Method Details

    • isThisSyntax

      public boolean isThisSyntax(String message) throws ServiceException
      Description copied from interface: SyntaxIdentifier
      Determine if this SyntaxIdentifer considers the message to match all the configured patterns.
      Parameters:
      message - the message to identify against.
      Returns:
      true if it matches.
      Throws:
      ServiceException - if there was an error with the pattern.
      See Also:
    • getResolveAsNodeset

      public Boolean getResolveAsNodeset()
    • setResolveAsNodeset

      public void setResolveAsNodeset(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:
    • resolveAsNodeset

      protected boolean resolveAsNodeset()