> For the complete documentation index, see [llms.txt](https://captivatehelp.newbluelive.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://captivatehelp.newbluelive.com/play-and-update-graphics/chapter-index-1/use-xml-or-json-with-tables.md).

# Use XML or JSON with Tables

Tables can load XML and JSON sources and present them as rows and columns when the data has a table-like structure. This works best when each record is one object or element and each field is a simple value.

If your XML or JSON is deeply nested, includes multiple record types, or mixes data with metadata, you may need to simplify the source before loading it.

## Load an XML or JSON file

1. Add a [Tables: Row](/play-and-update-graphics/chapter-index-1/drive-a-graphic-with-tables-row.md) or [Tables: Block](/play-and-update-graphics/chapter-index-1/tables-block-controller.md) input.
2. On the **Load New Data** screen, click **Browse** and pick the `.xml` or `.json` file — or click **Open URL** and enter the address of a feed. Captivate detects the content type from the file extension.
3. The parsed data appears in the Tables panel as a grid. Check that the columns and rows match what you expect, then connect the source fields to your graphic values as with any other Tables source. Use **Link Data** in the **Preview** panel to change which source field controls each graphic value.

If the grid doesn’t show the columns you expect, the most reliable fix is to simplify the feed before loading it: export a flatter structure where each record is one object or element and each field is a simple value, or convert the data to CSV and load the CSV instead.

## Row or Block for XML and JSON?

The choice is the same as for spreadsheets — choose based on the graphic, not the file type:

* **Tables: Row** — each record drives one graphic variation at a time. The common case.
* **Tables: Block** — several records drive one graphic at once (leaderboards, rosters).

## When to use the legacy controllers instead

Older projects may use the **General > JSON** or **General > XML** menu entries. Those legacy inputs keep working — see [Legacy JSON controller](/play-and-update-graphics/chapter-index-2/legacy-json-controller.md) and [Legacy XML controller](/play-and-update-graphics/chapter-index-2/legacy-xml-controller.md).

One workflow remains legacy-only: sports XML feeds that use a separate **control document** (an XML file that maps title variables to the feed) use the legacy **Sports > XML** path. If your workflow depends on a control document, stay on the legacy input.

For new XML and JSON workflows, use Tables: it reads the same files and adds column sorting, header context menus, and Auto Refresh that the older controllers lack.

## See also

* [Tables overview](/play-and-update-graphics/chapter-index-1/tables-overview.md)
* [Drive a graphic with Tables: Row](/play-and-update-graphics/chapter-index-1/drive-a-graphic-with-tables-row.md)
* [Tables: Block Controller](/play-and-update-graphics/chapter-index-1/tables-block-controller.md)
* [Legacy data controllers](/play-and-update-graphics/chapter-index-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://captivatehelp.newbluelive.com/play-and-update-graphics/chapter-index-1/use-xml-or-json-with-tables.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
