XPath search field expression type plugin
Info
Use this plugin to extract values from large XML messages.
Basic XPath 1.0 on XML
Large messaging support
Support for multiple XPath expressions using the |
character.New 6.1
The Nodinite XPath Search Field Expression Type plugin can find one or more unique values from elements and attributes in your logged XML documents.
A Logged message comes from a Log Event that is part of the Logging feature of Nodinite, and the Search Fields are further used within self-service enabled Log Views for your business.
Quick example
Let's get you started with the following simple demonstration example, which is valid for this search field plugin. For other and more advanced examples, please scroll to the Examples section on this page .
Input | Expression | Result |
---|---|---|
|
|
101 102 |
XML Data | Xpath expression | Unique values |
Features
This plugin uses a high-performance read-only fast forward-only stream reader. Based on Microsoft's XPathReader.
- Extract single or multiple unique values from XML messages (payload)
- You can use many regular XPath 1.0 expressions as defined by W3C
- The XPathReader provides the ability to perform XPath over XML documents in a streaming manner (large messages are thereby supported)
- The XPathReader provides the ability to filter and process large XML documents efficiently using an XPath-aware XmlReader. With the XPathReader, one can sequentially process a large document and extract an identified sub-tree matched by the user-configured XPath expression.
Note
Not all types of XPath expressions can be used, as it's a forward-only stream reader. It supports basic XPath 1.0 expressions.
How to use
To extract values from XML messages, you must first configure the Search Field, in this example case; The Order Id:
- Select expression type plugin
- Enter an expression
- Finalize remaining steps, including selection of Message Types and optional re-index operation (Add or manage Search Field)
Once a Search Field is configured, values are extracted during normal processing or from user-initiated re-index operations. Extracted values persist and stored for as long as the days to keep events property on the Message Type are configured.
Test Expression
You can test an expression when configuring a Search Field in the 'Test Expression' tab.
- Enter an appropriate payload in the 'Message Body' tab.
- Select the 'XPath' expression type plugin.
- Enter valid XPath expression (You can also click on elements/attributes to get a suggestion).
- Review the result/output, rewrite the code in step 3 until you get the data you seek.
The actual result (values) are extracted by the Logging Service and then presented together with the evaluated processing state and the number of unique matches.
A valid expression with state output, unique values and total count.
If the expression is either invalid or does not match any data, then the following output is presented:
Here's an example with an invalid expression, which yields no result.
Examples
You can find some additional examples of allowed expressions to get you started in the following link: XPath examples
Basic example
To extract order id(s) for the Message Type 'Common.Schemas/Nodinite/1.0#Orders
' you can use the following valid expression 'Orders/Order/Id
'. This expression yields the unique values 101
and 102
Message Body
<ns0:Orders xmlns:ns0="Common.Schemas/Nodinite/1.0">
<Order>
<Id>101</Id>
<Amount>1000</Amount>
<City>Karlstad</City>
</Order>
<Order>
<Id>102</Id>
<Amount>10</Amount>
<City>Stockholm</City>
</Order>
</ns0:Orders>
Expression
Orders/Order/Id
Order-/Order-Response example
You can probably apply this solution pattern on many other common integration scenarios
Let's say there are multiple Message Types where the structure is very similar and maybe the only difference is the name of the root node.
To extract the order id(s) for both Message Types:
Common.Schemas/Nodinite/1.0#Orders
andCommon.Schemas/Nodinite/1.0#OrderResponse
Use the following valid XPath expression 'node()/Order/Id
'. This expression yields the unique values 101
and 102
for both messages.
This means that you only need just one (1) search field expression applied on the two (2) Message Types. Using this technique saves your time and helps you keep related configurations tight and together.
Order | OrderResponse |
---|---|
|
|
Expression
node()/Order/Id
Next Step
How to Add or manage Search Fields
How to Add or manage Log Views
Related
Expression Type Plugins are used in Search Fields
What are Search Fields?
What are Search Field Expressions?
What are Message Types?
What are Log Views?