{"slug":"402utils-com-v1-xml-to-json-3ee616","title":"Convert XML to clean JSON","host":"402utils.com","method":"POST","resource":"https://402utils.com/v1/xml-to-json","category":"other","description":"Convert XML to clean JSON. POST raw XML (XML or text/plain Content-Type) or a JSON envelope {xml, alwaysArray}. Attributes land under \"@_\" keys, mixed-content text under \"#text\", repeated siblings become arrays, and alwaysArray forces arrays for listed tags even on a single occurrence. Numeric chara","price_listed":0.002,"price_asked":0.002,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":23,"reported_calls_30d":1,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"alwaysArray":["item"],"xml":"<order id=\"A-17\"><item sku=\"X1\">Café grinder</item><item sku=\"X2\">Filter</item></order>"},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"JSON envelope. Alternatively POST the raw XML document directly with an XML or text/plain Content-Type (no envelope needed).","properties":{"alwaysArray":{"description":"Tag names that must always parse as arrays, even when only one occurrence exists (max 100).","items":{"type":"string"},"type":"array"},"xml":{"description":"XML document to convert. Max 5 MB UTF-8. DTD entity declarations and DOCTYPE internal subsets are rejected (422).","type":"string"}},"required":["xml"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"description":"The converted document.","properties":{"json":{"description":"Parsed document keyed by the root tag. Attributes are kept under \"@_\"-prefixed keys, text of mixed content under \"#text\", repeated siblings become arrays; numeric- and boolean-looking values are coerced to numbers/booleans.","type":"object"},"root":{"description":"Root tag name.","type":"string"}},"required":["json","root"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-09-24","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.002,"price_match":true,"latency_ms":23,"error":null}],"description_full":"Convert XML to clean JSON. POST raw XML (XML or text/plain Content-Type) or a JSON envelope {xml, alwaysArray}. Attributes land under \"@_\" keys, mixed-content text under \"#text\", repeated siblings become arrays, and alwaysArray forces arrays for listed tags even on a single occurrence. Numeric character references decode. DTD entities and DOCTYPE internal subsets rejected (anti-XXE / billion-laughs). Max 5 MB.","last_updated":"2026-09-18T11:20:12.331Z","schemes":["exact"]}