2. Creating MessageTypes from XML file payloads
Introduction
Skyvva's metadata engine supports integration scenarios where systems exchange data through structured XML payloads. Unlike CSV, XML does not require column definitions or separators — the system reads the XML tag names directly as field names and detects the data structure from the payload hierarchy.
When an XML file is uploaded via the Open Editor, the engine automatically parses the tag structure and generates MessageTypes and Field Entries. This works for both flat XML (repeating records with no nesting) and hierarchical XML (nested parent-child elements such as Orders containing OrderItems).
While XML is a widely used format across many integration scenarios in Skyvva, this guide focuses specifically on XML file payloads uploaded through the Open Editor. Use cases such as API-based integrations or external system calls that also rely on XML are not covered here.
This guide covers two key scenarios: uploading a flat XML payload and uploading a hierarchical XML payload. In the hierarchical case, Skyvva automatically detects the parent-child relationships from the XML nesting — no manual tree assignment is required.
Scenario 1 : Upload XML — Flat Structure
This scenario covers uploading an XML file that contains repeating flat records, where each record contains only a single level of fields with no nested child objects. The system reads the XML tags and automatically generates one MessageType with corresponding Field Entries.
Although the XML may contain a root wrapper element (e.g., OrdersMessage) and repeating child nodes (e.g., Order), the structure remains flat as long as no nested child elements exist within each record.
Step 1 – Upload Payload
Upload an XML file containing flat repeating records (e.g., multiple Orders with no nested child objects):
- Go to Repository details → click Open Editor
- Select file type: XML → click Next
- Paste your XML payload (example below) → click Save
<?xml version="1.0" encoding="UTF-8"?>
<OrdersMessage>
<Order>
<OrderNumber>ORD-2026-1001</OrderNumber>
<EffectiveDate>2026-05-08</EffectiveDate>
<Status>Draft</Status>
<CurrencyIsoCode>EUR</CurrencyIsoCode>
<TotalAmount>2450.00</TotalAmount>
</Order>
<Order>
<OrderNumber>ORD-2026-1002</OrderNumber>
<EffectiveDate>2026-05-08</EffectiveDate>
<Status>Draft</Status>
<CurrencyIsoCode>EUR</CurrencyIsoCode>
<TotalAmount>2460.00</TotalAmount>
</Order>
</OrdersMessage>
Note: Unlike CSV, XML does not require an intermediate configuration step. After pasting the payload, click Save directly — the system reads the tag structure and generates MessageTypes automatically.
Step 2 – Metadata Generation Result
Once saved, the page refreshes and the generated MessageTypes appear in the Repository list. The system identifies:
- OrdersMessage — the root wrapper node
- Order — the repeating flat record structure
The following Field Entries are automatically generated from the Order node, each with a sequential sequence number:
- OrderNumber
- EffectiveDate
- Status
- CurrencyIsoCode
- TotalAmount
Note: The generated MessageTypes and Field Entries are now ready to be used in the next step of the Interface configuration.
Scenario 2: Upload XML — Hierarchical (Parent-Child) Structure
This scenario applies when the XML contains nested elements representing two or more related objects — for example, an Order (parent) containing OrderItems (children). The system detects the nested structure and automatically generates a parent MessageType and one or more child MessageTypes to represent the relationship.
Key difference from CSV: After the XML payload is uploaded, Skyvva automatically generates the MessageType structure, including the full parent-child hierarchy, based on the payload structure. No manual tree assignment is required.
Step 1 – Upload Payload
Upload an XML file containing hierarchical data (e.g., Order with nested Account, BillingAddress, and OrderItems):
- Go to Repository details → click Open Editor
- Select file type: XML → click Next
- Paste your XML payload (example below) → click Save
<?xml version="1.0" encoding="UTF-8"?>
<OrdersMessage>
<Order>
<OrderNumber>ORD-2026-1001</OrderNumber>
<Account>
<ExternalCustomerId>CUST-10045</ExternalCustomerId>
<Name>Berlin Tech Solutions GmbH</Name>
</Account>
<EffectiveDate>2026-05-08</EffectiveDate>
<Status>Draft</Status>
<CurrencyIsoCode>EUR</CurrencyIsoCode>
<BillingAddress>
<Street>Alexanderplatz 12</Street>
<City>Berlin</City>
<Country>Germany</Country>
</BillingAddress>
<TotalAmount>2450.00</TotalAmount>
<OrderItems>
<OrderItem>
<LineNumber>1</LineNumber>
<ProductCode>LAPTOP-PRO-15</ProductCode>
<Quantity>2</Quantity>
<UnitPrice>950.00</UnitPrice>
<TotalPrice>1900.00</TotalPrice>
</OrderItem>
</OrderItems>
</Order>
</OrdersMessage>
Step 2 – Metadata Generation Result
Once saved, the page refreshes and Skyvva automatically analyzes the XML hierarchy, detects nested nodes, and generates the full parent-child MessageType structure. The Repository list displays:
- OrdersMessage — root wrapper node
- Order — parent MessageType
- OrderItem — repeating child MessageType under OrderItems
Note: Nested wrapper elements such as Account, BillingAddress, and OrderItems are recognized based on hierarchy. Their child elements (e.g., ExternalCustomerId, Street, LineNumber) are automatically generated and assigned under the corresponding parent node.
Navigate to the Order MessageType to review its Field Entries, then navigate to OrderItem to inspect its Field Entries — each assigned sequential sequence numbers.
- Order:
- OrderItem:
Note: Once all Field Entries are verified, they are ready to be used in the next step of the Interface configuration.
Summary
- XML payloads are parsed by tag name — no separators or column definitions are needed.
- Flat XML (repeating records with no nested child elements) generates a single MessageType with one Field Entry per tag.
- Hierarchical XML (nested parent-child elements) triggers automatic hierarchy detection — Skyvva generates the full parent-child MessageType structure without requiring manual tree assignment.
- Nested wrapper elements (e.g., Account, BillingAddress) are recognized and their child tags are mapped as Field Entries under the appropriate MessageType level.
- The generated MessageTypes are reusable and serve as the structural foundation for Inbound and Outbound interface configuration.