XML to Tuple and Tuple to XML Operator Sample

About This Sample

This sample shows how to use the TIBCO StreamBase® XML to Tuple and Tuple to XML operators.

The XML to Tuple Java operator converts XML-encoded messages to StreamBase tuples. The operator's input port schema has a single string field that passes an XML-encoded message to the operator. The operator parses the XML message and populates tuple fields corresponding to the elements and attributes found in the message. Each XML message enqueued to the operator results in a single tuple emitted on its output port.

The Tuple to XML Java operator converts StreamBase tuples to XML-encoded messages. Each field in the operator's input port schema populates an element or attribute in the resulting XML message. Each tuple enqueued to the operator results in a single XML message emitted on its output port.

See the description of the operators' Properties views in Using the XML to Tuple Operator and Using the Tuple to XML Operator.

Several sample applications illustrate the use of the XML to Tuple operator. In this first set of samples, the operator parses an XML message and populates the corresponding fields in the output tuple. Each sample application includes a file containing a canned XML message to obviate entering XML strings manually.

  • The xml2tuple-datatypes.sbapp sample illustrates populating tuple fields from XML elements for a variety of StreamBase data types, including primitive types, lists, and nested tuples. XML attributes are disabled and therefore discarded by the operator.

  • The xml2tuple-attributes.sbapp sample illustrates two techniques for retrieving XML attributes. The sample's output schema is configured to receive attributes for the following fields:

    • Top

    • Top.MyInt

    • Top.MyString

    • Top.MyStringList

  • The xml2tuple-fixml.sbapp sample shows how the operator handles a more complex, hierarchical XML input string that includes element and attribute values, using a FIXML message for its example input.

  • The xml2tuple-xpath.sbapp sample shows how the operator handles XPath operations to produce sub XML chunks, single elements or lists of data based on the XPath expression.

Two sample applications illustrate the use of the Tuple to XML operator. In this second set of samples, the operator generates and emits an XML message based on the contents of an input tuple.

  • In tuple2xml-datatypes.sbapp, XML attributes are disabled and are therefore not included in the generated XML message.

  • In tuple2xml-attributes.sbapp, XML attributes are enabled, and the sample's input schema is configured to generate attributes for the following fields:

    • Top

    • Top.Middle

Importing This Sample into StreamBase Studio

In StreamBase Studio, import this sample with the following steps:

  • From the top menu, click FileLoad StreamBase Sample.

  • Type xml to narrow the list of options.

  • Select xmltuple from the Data Constructs and Operators category.

  • Click OK.

StreamBase Studio creates a single project for the operator samples.

Running the XML to Tuple Samples in StreamBase Studio

  1. In the Project Explorer, open the sample you just loaded.

  2. Open the src/main/eventflow folder.

  3. Open the package folder (most samples contain a single package folder. Open the top-level package folder if your sample contains more than one folder).

  4. Open the xml2tuple-datatypes.sbapp file and click the Run button. This opens the SB Test/Debug perspective and starts the application.

    If you see red marks, wait a moment for the project in Studio to load its features.

    If red marks do not resolve themselves in a moment, select the project and right-click MavenUpdate Project from the context menu.

  5. In the Manual Input view, select the TupleIn stream and click Send Data.

  6. In the Application Output view, observe a tuple dequeued on the TupleOut stream in which fields are populated from the contents of the XML message contained in xml2tuple-datatypes.xml, located in src/main/resources.

  7. Experiment by entering other values in the XML field of the XMLIn stream, clicking Send Data, and observing the resulting output tuples.

  8. When done, press F9 or click the Stop Running Application button.

  9. Next, open and run the xml2tuple-attributes.sbapp application.

  10. In the Manual Input view, select the TupleIn stream and click Send Data.

  11. In the Application Output view, observe tuples emitted on the TupleOut1 and TupleOut2 streams in which fields are populated from the contents of the XML message contained in xml2tuple-attributes.xml, located in src/main/resources. The attributes in the TupleOut1 tuple appear in subfields whose names match the corresponding XML attribute names, while the attributes in the TupleOut2 tuple appear in subfields of fields named _ATTRIBUTES.

  12. Experiment by entering other values in the XML field if the XMLIn stream, clicking Send Data, and observing the resulting output tuples.

  13. When done, press F9 or click the Stop Running Application button.

  14. Next, open and run the xml2tuple-fixml.sbapp application.

  15. In the Manual Input view, select the StartRead stream and click Send Data.

  16. This sample's FIXML input string is provided for you via the xml2tuple-fixml.xml file, located in src/main/resources.

  17. Notice a single tuple emitted on the TupleOut stream. Open the tuple's hierarchical levels by clicking the triangles in the Field column.

  18. When done, press F9 or click the Stop Running Application button.

  19. Next, open and run the xml2tuple-xpath.sbapp application.

  20. In the Manual Input view, select the ReadFile stream and click Send Data.

  21. This sample's XML input string is provided for you via the xml2tuple-xpath.xml file, located in src/main/resources.

  22. Notice a single tuple emitted on the XPathOut stream. Open the tuple's hierarchical levels by clicking the triangles in the Field column. Also notice that if a non-list schema type is provided and the XPath expression produces a list of data, only the last XPath node will be used to populate the schema element. If you want all elements then use the list data type.

  23. When done, press F9 or click the Stop Running Application button.

Running the Tuple to XML Samples in StreamBase Studio

  1. Open and run the tuple2xml-datatypes.sbapp application.

  2. In the Manual Input view, select the TupleIn stream, enter 123 in the Top.MyInt field and click Send Data.

  3. In the Application Output view, observe a single tuple emitted on the XMLOut stream in which the XML field contains <Top><MyInt>123</MyInt><MyTuple></MyTuple></Top>.

  4. Experiment by entering other values in various other fields in the Manual Input view, clicking Send Data, and observing the resulting output tuples.

  5. When done, press F9 or click the Stop Running Application button.

  6. Now run the tuple2xml-attributes.sbapp application.

  7. In the Manual Input view, select the TupleIn stream, enter myattrvalue1 and myattrvalue2 in the Top.s1 and Top.Middle[0].s2 fields, respectively, and click Send Data.

  8. In the Application Output view, observe a single tuple from the XMLOut1 stream in which the XML field contains <Top s1="myattrvalue1"><Middle s2="myattrvalue2"></Middle></Top>.

  9. When done, press F9 or click the Stop Running Application button.

Sample Location

When you load the sample into StreamBase Studio, Studio copies the sample project's files to your Studio workspace, which is normally part of your home directory, with full access rights.

Important

Load this sample in StreamBase Studio, and thereafter use the Studio workspace copy of the sample to run and test it, even when running from the command prompt.

Using the workspace copy of the sample avoids permission problems. The default workspace location for this sample is:

studio-workspace/sample_xmltuple

See Default Installation Directories for the default location of studio-workspace on your system.