XML Viewer: Complete Feature Guide & Reference
</> Open the XML Viewer to explore every feature described in this guide.
Open XML Viewer →Contents
- What Is the XML Viewer?
- Supported File Formats
- Repeating Element Auto-Detection
- How XML Maps to Columns
- XML Structure Examples
- The Toolbar
- Stats Bar
- Sorting Columns
- Row Filtering
- Global Search
- Cell Detail Panel
- File Info Panel
- Pagination
- Export Options
- Limitations and When to Use Other Tools
- Privacy & Security
- Use Cases for Financial Data
What Is the XML Viewer?
The FinancialDataTools.com XML Viewer is a free, browser-based tool for opening and exploring XML files as a spreadsheet-style data table. It uses the browser's native DOMParser API to parse your XML entirely inside your browser — no external library and no file upload to any server.
The viewer is designed for financial analysts and data engineers who encounter data-oriented XML — financial data feeds, report exports, bank statement XML, RSS feeds, and legacy system outputs — and need to browse and export the structured data without writing custom parsing code.
Try the XML Viewer — runs entirely in your browser and never uploads your files.
Open the XML Viewer →Supported File Formats
| Extension | Description | Common Source |
|---|---|---|
| .xml | Standard XML document | Financial data feeds, report exports, configuration files |
| .xsl | XSL stylesheet (valid XML) | XSLT transformation files |
| .xsd | XML schema definition | Schema validation files for financial data standards |
| .rss | RSS feed (XML-based) | Financial news feeds, market data feeds |
| .atom | Atom feed (XML-based) | Financial news and data syndication feeds |
Requirement: The file must be well-formed XML. Malformed XML (unclosed tags, invalid characters, etc.) will produce a parse error. The viewer uses the browser's built-in XML parser and reports any parsererror elements returned by the DOMParser.
Repeating Element Auto-Detection
The core challenge with XML-to-table conversion is identifying which elements represent "rows." The viewer handles this automatically:
- It traverses the XML document tree up to 5 levels deep and counts the occurrences of each element tag name
- The tag that appears most frequently (excluding the root element) is selected as the row element
- All instances of that element are extracted as rows
- The detected element name is shown in the stats bar as the Element indicator
This heuristic works well for data-oriented XML where a single element type represents a data record (e.g., <transaction>, <item>, <record>, <entry>). For XML with two or more equally-repeated element types, the algorithm picks the one with the higher count; if counts are equal, the first encountered wins.
If fewer than two instances of any element are found, the viewer falls back to using the direct children of the root element as rows.
How XML Maps to Columns
Once the row element is identified, the viewer scans all instances of that element to build a complete set of columns. Two sources of data become columns:
| Source | Column Name | Example |
|---|---|---|
| XML attributes | @attributeName (prefixed with @) | <trade id="T001" date="2025-01-15"> → columns @id and @date |
| Child element text content | The child element's tag name | <symbol>AAPL</symbol> → column symbol |
| Text-only elements (no children) | #text | Elements containing only text with no child elements |
If a row element has child elements that themselves contain further children (deeply nested XML), the innermost HTML of those child elements is used as the cell value. This allows partial display of nested structures, though deeply nested data is best pre-processed before opening in the viewer.
Columns are built from the union of all attributes and child element names across all row elements. If some row elements lack a particular attribute or child, that cell is shown as — (null).
XML Structure Examples
Attribute-based XML (attributes become @-prefixed columns):
<trades>
<trade id="T001" date="2025-01-15" symbol="AAPL" qty="100" price="150.25"/>
<trade id="T002" date="2025-01-15" symbol="MSFT" qty="200" price="380.50"/>
</trades>
This produces columns: @id, @date, @symbol, @qty, @price.
Child-element-based XML (child tags become column names):
<transactions>
<transaction>
<date>2025-01-15</date>
<symbol>AAPL</symbol>
<amount>15025.00</amount>
</transaction>
</transactions>
This produces columns: date, symbol, amount.
RSS/Atom feed XML — the viewer detects <item> or <entry> elements as rows and their child elements (title, link, pubDate, description) as columns.
The Toolbar
| Button | Function |
|---|---|
| Open File | Opens a system file picker for .xml, .xsl, .xsd, .rss, or .atom files |
| Info | Opens the file info panel showing column overview and file metadata |
| Export | Opens the export dialog |
| File name display | Shows the currently loaded file name |
| Search box | Global text search across all columns simultaneously |
Drag and drop a file anywhere on the viewer to open it without using the Open button.
Stats Bar
- Rows: Total number of detected row elements
- Showing: Number of rows visible after applying filters
- Cols: Number of unique attribute and child element columns
- Element: The tag name of the auto-detected row element (e.g.,
<trade>) - Filter badge: Pink badge showing active column filter count; click to clear all
Sorting Columns
Click any column header to sort ascending, click again to sort descending, and a third click returns to the original document order. Columns that contain predominantly numeric values sort numerically; all other columns sort lexicographically (alphabetically).
Row Filtering
Click the filter icon in any column header to open the column filter panel. Two modes are available:
- Values mode: A checklist of all distinct values in that column. Uncheck values to hide matching rows. Includes a search box for finding specific values in long lists.
- Conditions mode: Apply up to two conditions using operators: contains, does not contain, begins with, ends with, equals, does not equal, is empty/null, is not empty/null, greater than, less than, and their inclusive variants. Combine with AND or OR logic.
Multiple column filters stack with AND logic. The pink badge in the stats bar shows the number of active filters and can be clicked to clear all of them at once.
Global Search
The toolbar search input performs real-time text search across all columns simultaneously. Rows where no column contains the search term are hidden. Global search stacks with column filters.
Cell Detail Panel
Clicking any cell opens the Cell Detail Panel on the right side of the viewer. This panel shows:
- The row number
- The column name (attribute or child element)
- The column source: attribute, child element, or text content
- The character length of the value
- The full cell value, without truncation
A Copy value button copies the raw value to the clipboard. This is especially useful for long values that are truncated in the grid cell.
File Info Panel
Click the Info button in the toolbar to open the file info modal. It displays:
- The loaded file name
- Total element (row) count and column count
- The XML root element tag name
- A column overview table with each column name, its source (attribute or child element), and inferred type
Use Copy Column List to copy the column definitions as plain text.
Pagination
XML files with more than 50,000 row elements are automatically paginated to 5,000 rows per page. The page bar at the bottom shows the current page, total pages, and row range. Sorting and filtering operate across the entire dataset before pagination is applied.
Export Options
| Format | Best For | Notes |
|---|---|---|
| CSV | Spreadsheets, data pipelines, pandas DataFrames | UTF-8 encoded; null values as empty strings; attribute prefix (@) preserved in headers |
| JSON | APIs, downstream processing | Array of objects; column names include @ prefix for attributes; null preserved |
| Excel (.xlsx) | Sharing with stakeholders | Frozen header row; auto-sized columns; attribution sheet included |
| TSV | Tab-separated import targets | Useful when values may contain commas |
Two export scopes: Filtered view exports only visible rows, and Full file exports all row elements ignoring filters.
Limitations and When to Use Other Tools
The XML Viewer works best with data-oriented XML — files where a single repeated element type represents records. It is not suited for:
- Document-oriented XML (e.g., XHTML, Word XML, SVG) — complex mixed-content XML that doesn't have a clear repeating data element will not display usefully as a table
- Deeply nested hierarchies — XML where each row element contains multi-level nested objects (e.g., FIXML, FpML) requires pre-processing with XSLT or Python's
xml.etree.ElementTreebefore the viewer can display it clearly - Namespace-heavy XML — files with extensive XML namespace prefixes may cause column names to appear with namespace prefixes; this does not affect functionality but reduces readability
- Very large single-element XML — files where all content is in a single root element with no children will produce a one-row table; use XPath or XSLT to flatten the data first
Privacy & Security
The XML Viewer processes your file using the browser's native DOMParser API — no external parsing library is used for XML parsing, and no file content is transmitted to any server. The only network request beyond loading the viewer itself is ExcelJS from a CDN, used only during Excel export.
This makes the viewer appropriate for sensitive financial XML data including bank statement exports, internal financial reports, and data feeds containing proprietary information.
Closing the browser tab clears all data from memory immediately. No data is written to localStorage or any persistent browser storage.
Use Cases for Financial Data
XML remains a key interchange format in financial services, particularly in legacy systems and standardized data exchange protocols. Common scenarios:
- Bank statement XML exports: Many banks provide account statement downloads in XML format (often OFX-based or proprietary). The viewer can open these and display transactions as a table for inspection and export.
- Financial data feeds: RSS and Atom feeds from financial news aggregators, central banks, and data providers carry structured data (rates, announcements, prices) in XML that the viewer can display as rows.
- Report exports: Accounting and ERP systems including SAP, Oracle, and Microsoft Dynamics frequently export reports and journal entries as XML. The viewer provides a quick way to inspect exported data before importing it elsewhere.
- XBRL and regulatory filings: While full XBRL parsing requires specialized tools, simplified XML exports from XBRL viewers or SEC EDGAR can often be opened in the viewer to browse individual data elements.
- Configuration and reference data: Financial applications often store product definitions, instrument reference data, and pricing parameters in XML. The viewer lets you inspect these files without opening a full XML editor.
- Data migration audits: When migrating from XML-based data stores to relational databases, the viewer provides a quick way to audit the structure and content of source XML files.
