XML Viewer
What is the XML Viewer?
If you've ever opened a 5MB SOAP response in a text editor and tried to find a single order line hiding six levels deep, you know why this tool exists. XML Viewer takes any XML blob — SOAP payloads, RSS feeds, build manifests, Spring configs, Android layouts — and lays the whole element hierarchy out as browsable tables so you can actually see what's in there.
The focus here is on looking at the structure, not reformatting it. You can see which elements repeat, which carry attributes, and how deeply things nest. It is the quickest way to answer "does this response contain the field I need?" without writing an XPath or poking at DOMParser in the browser console.
Parsing happens locally in your browser with the native DOM parser, so pasting a payload from a staging endpoint does not send it anywhere. The one exception is Share: it uploads the XML so the link works.
How to Use the XML Viewer
Four steps to go from a wall of angle brackets to something you can actually navigate. Each step lines up with a real button on the page.
Drop in XML or load the sample
Paste XML into the left editor: an API response captured in Postman, a pom.xml, an RSS feed or any .xml export. Hit Sample to try it with a small subscriber list. Here is another document that shows how repeated elements render:
<purchaseOrder orderNumber="PO-5521"><customer>Northwind Traders</customer><lineItems><item sku="SKU-101"><description>USB-C Hub</description><quantity>3</quantity><unitPrice>29.99</unitPrice></item><item sku="SKU-204"><description>HDMI Cable 2m</description><quantity>10</quantity><unitPrice>8.50</unitPrice></item></lineItems><total>119.97</total></purchaseOrder>If the XML is not well-formed, the right panel shows the parser's error instead of a table. It is usually an unclosed tag or a bare ampersand that should be &.
Browse the structure
The right panel shows the document as nested tables. If the root element only wraps one repeated element, like <subscribers> around several <subscriber> entries, each entry becomes a row and its children become columns. Any other document is shown as a single row, so fields that sit next to a repeated element are never dropped; the repeated element shows up as a table inside its cell. Attributes are grouped in an @attributes cell, and text that sits next to attributes appears under #text. In the purchase order above, you get one row with @attributes, customer, lineItems and total columns, and lineItems holds a two-row table of items. Hit Main / Nested to flip rows and columns when one orientation reads better.
Filter to find what you need
Every column has a filter box. Type SKU-204 to find one line item, or HDMI to narrow by description. Filters on several columns must all match, and case does not matter, so hdmi matches HDMI. Filtering is plain text matching, not numeric comparison.
Maximize, share, or pull into Excel
Maximize opens the tables full-screen, which helps with deeply nested payloads. Excel downloads the table as an .xls file for Excel, Numbers or LibreOffice. Share uploads the XML and creates a link (1 month up to 2 years) so a teammate sees the same view without you emailing the file around.
When This Actually Helps
Inspecting SOAP and legacy API responses
Enterprise integrations still speak SOAP. When a GetOrderDetails call returns 400 lines of namespaced XML, you don't want to read it linearly — you want to see the shape. Paste the response here and the envelope, header, body, and nested order details all become browsable tables. You can spot a missing <ShipDate> in under a second.
Reviewing build manifests and pom.xml files
Trying to figure out why a Maven build is pulling in the wrong Jackson version? Paste your pom.xml here and you can see the dependency tree laid out cleanly — groupId, artifactId, version, scope all in columns. Same trick works for .csproj, AndroidManifest.xml, web.config, and any other XML-based project file.
Exploring RSS, Atom, and sitemap feeds
Feed structure is always "obvious until it isn't." When your RSS reader misses items or your sitemap gets rejected, dumping the feed into a viewer shows you which entries are malformed, which are missing <guid>, and whether the <pubDate> format lines up with what the W3C feed validator expects.
Looking at XLIFF, TMX, and translation files
Localization XML (XLIFF, TMX, Android strings.xml) can have thousands of <trans-unit> entries. Browsing them as a table — with filter boxes on the source and target columns — makes it trivial to spot missing translations or find the one key the translator asked about, without opening a heavyweight CAT tool.
FAQ
Why pick this over the XML Parser or XML Reader?
It is the same table engine. The parser page is the general entry point, the reader page is written for people who need to read values, and this page is about inspecting structure. Pick whichever explanation fits; the tool behaves the same on all three. For formal validation against a schema you need a different tool, such as xmllint.
Does it handle XML namespaces and CDATA?
Yes. Namespaced elements like <soap:Envelope> keep their prefix in the column names, and CDATA content is shown as plain text. Comments and processing instructions are skipped because they hold no data for the table. Parsing is done by the browser's built-in DOMParser.
What about really large files?
The page accepts up to 5 MB. Under 1 MB renders instantly; near the limit, rendering thousands of nested tables takes a moment. For bigger exports, cut out the slice you care about with xmllint --xpath or XMLStarlet and paste that.
Is my data uploaded anywhere?
Not while you paste, filter or switch layouts; that all happens in your browser tab. Clicking Share uploads the XML so the link can show it, and you choose how long it lasts (1 month up to 2 years).
Can I view XML fragments, or does it need to be a full document?
It needs a single root element, as the well-formedness rules require. Wrap a fragment in <root>...</root> and it works. The <?xml version="1.0"?> declaration is optional.
How do attributes and mixed content show up?
Attributes sit together in an @attributes cell next to the element's children. Text next to attributes or child elements appears under #text, with surrounding whitespace trimmed, so text in mixed content is shown but not in its original position.
Related XML Tools
The viewer is great for looking. When you need to change, convert, or validate, these are the siblings you'll reach for: