> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Parse from cXML

> Parses a cXML string into a data object.

export const FormField = ({property, label, required = false, diType, uiPatterns, children}) => {
  const patterns = Array.isArray(uiPatterns) ? uiPatterns : uiPatterns ? [uiPatterns] : [];
  return <div style={{
    margin: '1.5rem 0'
  }}>
      <div style={{
    display: 'flex',
    alignItems: 'baseline',
    flexWrap: 'wrap',
    gap: '0.5rem',
    marginBottom: '0.25rem'
  }}>
        <strong>{label}</strong>
        <span style={{
    fontSize: '0.7rem',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.04em',
    color: required ? '#6241f5' : '#6b7280'
  }}>
          {required ? 'Required' : 'Optional'}
        </span>
      </div>

      <div>{children}</div>

      {diType || patterns.length > 0 ? <p style={{
    fontSize: '0.85rem',
    color: '#6b7280',
    marginBottom: 0
  }}>
          {diType ? <>
              See the <a href={`/references/${diType}`}>{diType}</a> reference.{' '}
            </> : null}
          {patterns.length > 0 ? <>
              Accepts a <a href={`/documentation/placeholders-and-patterns/patterns#${patterns[0]}`}>pattern</a>.
            </> : null}
        </p> : null}
    </div>;
};

Parses a cXML string into a data object. cXML is the XML-based format used for procurement documents such as purchase orders, order confirmations, ship notices, and invoices. Use this when a cXML message arrives as a single piece of text and you want to turn it into structured data, so values that were buried in XML tags and attributes become regular fields you can read and map.

Element attributes appear as fields prefixed with `@`, and the text inside an element appears under a `#` field. The document type line at the top of the message (the `<!DOCTYPE ...>` declaration) and comments are removed automatically, so you do not need to strip them yourself.

This documentation describes: [Schema](/schemas/mapper/deserialize-cxml)

## Fields

This mapper has no settings to configure. Point it at the cXML text you want to parse and it does the rest.

## Sample data

| Field         | Value |
| ------------- | ----- |
| (no settings) |       |

Input:

```json theme={null}
{
    "payload": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cXML payloadID=\"123\" timestamp=\"2026-06-19T10:00:00+00:00\"><Request><OrderRequest><OrderRequestHeader orderID=\"PO-1001\" type=\"new\"/></OrderRequest></Request></cXML>"
}
```

Output:

```json theme={null}
{
    "payload": {
        "@payloadID": 123,
        "@timestamp": "2026-06-19T10:00:00+00:00",
        "Request": {
            "OrderRequest": {
                "OrderRequestHeader": {
                    "@orderID": "PO-1001",
                    "@type": "new",
                    "#": ""
                }
            }
        }
    }
}
```

```json Configuration theme={null}
{
  "prototype": "deserialize-cxml",
  "parameters": {}
}
```
