{"id":15028856,"url":"https://github.com/spatie/array-to-xml","last_synced_at":"2025-05-12T13:25:02.561Z","repository":{"id":28864596,"uuid":"32388747","full_name":"spatie/array-to-xml","owner":"spatie","description":"A simple class to convert an array to xml","archived":false,"fork":false,"pushed_at":"2025-01-27T15:35:00.000Z","size":196,"stargazers_count":1158,"open_issues_count":0,"forks_count":215,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-04-23T07:02:43.643Z","etag":null,"topics":["api","array","configuration","xml"],"latest_commit_sha":null,"homepage":"https://spatie.be/open-source","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spatie.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"spatie","custom":"https://spatie.be/open-source/support-us"}},"created_at":"2015-03-17T11:10:45.000Z","updated_at":"2025-04-12T15:17:36.000Z","dependencies_parsed_at":"2023-02-16T20:15:33.365Z","dependency_job_id":"c74a3c12-d95e-4b00-9d78-ba917e1971e5","html_url":"https://github.com/spatie/array-to-xml","commit_stats":{"total_commits":195,"total_committers":55,"mean_commits":"3.5454545454545454","dds":0.4256410256410257,"last_synced_commit":"4a5aa67fd67e65c0d88723d1d5a7709e45ebe8b1"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spatie%2Farray-to-xml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spatie%2Farray-to-xml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spatie%2Farray-to-xml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spatie%2Farray-to-xml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spatie","download_url":"https://codeload.github.com/spatie/array-to-xml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253746078,"owners_count":21957495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","array","configuration","xml"],"created_at":"2024-09-24T20:09:12.164Z","updated_at":"2025-05-12T13:25:02.538Z","avatar_url":"https://github.com/spatie.png","language":"PHP","readme":"# Convert an array to xml\n\n[![Latest Version](https://img.shields.io/github/release/spatie/array-to-xml.svg?style=flat-square)](https://github.com/spatie/array-to-xml/releases)\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)\n![Tests](https://github.com/spatie/array-to-xml/workflows/Tests/badge.svg)\n[![Total Downloads](https://img.shields.io/packagist/dt/spatie/array-to-xml.svg?style=flat-square)](https://packagist.org/packages/spatie/array-to-xml)\n\nThis package provides a very simple class to convert an array to an xml string.\n\n## Support us\n\n[\u003cimg src=\"https://github-ads.s3.eu-central-1.amazonaws.com/array-to-xml.jpg?t=1\" width=\"419px\" /\u003e](https://spatie.be/github-ad-click/array-to-xml)\n\nWe invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us).\n\nWe highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards).\n\n## Install\n\nYou can install this package via composer.\n\n``` bash\ncomposer require spatie/array-to-xml\n```\n\n## Usage\n\n```php\nuse Spatie\\ArrayToXml\\ArrayToXml;\n...\n$array = [\n    'Good guy' =\u003e [\n        'name' =\u003e 'Luke Skywalker',\n        'weapon' =\u003e 'Lightsaber'\n    ],\n    'Bad guy' =\u003e [\n        'name' =\u003e 'Sauron',\n        'weapon' =\u003e 'Evil Eye'\n    ]\n];\n\n$result = ArrayToXml::convert($array);\n```\nAfter running this piece of code `$result` will contain:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003croot\u003e\n    \u003cGood_guy\u003e\n        \u003cname\u003eLuke Skywalker\u003c/name\u003e\n        \u003cweapon\u003eLightsaber\u003c/weapon\u003e\n    \u003c/Good_guy\u003e\n    \u003cBad_guy\u003e\n        \u003cname\u003eSauron\u003c/name\u003e\n        \u003cweapon\u003eEvil Eye\u003c/weapon\u003e\n    \u003c/Bad_guy\u003e\n\u003c/root\u003e\n```\n\n\n### Setting the name of the root element\n\nOptionally you can set the name of the rootElement by passing it as the second argument. If you don't specify\nthis argument (or set it to an empty string) \"root\" will be used.\n```\n$result = ArrayToXml::convert($array, 'customrootname');\n```\n\n### Handling key names\n\nBy default all spaces in the key names of your array will be converted to underscores. If you want to opt out of\nthis behaviour you can set the third argument to false. We'll leave all keynames alone.\n```\n$result = ArrayToXml::convert($array, 'customrootname', false);\n```\n\n### Adding attributes\n\nYou can use a key named `_attributes` to add attributes to a node, and `_value` to specify the value.\n\n```php\n$array = [\n    'Good guy' =\u003e [\n        '_attributes' =\u003e ['attr1' =\u003e 'value'],\n        'name' =\u003e 'Luke Skywalker',\n        'weapon' =\u003e 'Lightsaber'\n    ],\n    'Bad guy' =\u003e [\n        'name' =\u003e 'Sauron',\n        'weapon' =\u003e 'Evil Eye'\n    ],\n    'The survivor' =\u003e [\n        '_attributes' =\u003e ['house'=\u003e'Hogwarts'],\n        '_value' =\u003e 'Harry Potter'\n    ]\n];\n\n$result = ArrayToXml::convert($array);\n```\n\nThis code will result in:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003croot\u003e\n    \u003cGood_guy attr1=\"value\"\u003e\n        \u003cname\u003eLuke Skywalker\u003c/name\u003e\n        \u003cweapon\u003eLightsaber\u003c/weapon\u003e\n    \u003c/Good_guy\u003e\n    \u003cBad_guy\u003e\n        \u003cname\u003eSauron\u003c/name\u003e\n        \u003cweapon\u003eEvil Eye\u003c/weapon\u003e\n    \u003c/Bad_guy\u003e\n    \u003cThe_survivor house=\"Hogwarts\"\u003e\n        Harry Potter\n    \u003c/The_survivor\u003e\n\u003c/root\u003e\n```\n\n*Note, that the value of the `_value` field must be a string. [(More)](https://github.com/spatie/array-to-xml/issues/75#issuecomment-413726065)* \n\n### Using reserved characters\n\nIt is also possible to wrap the value of a node into a CDATA section. This allows you to use reserved characters.\n\n```php\n$array = [\n    'Good guy' =\u003e [\n        'name' =\u003e [\n            '_cdata' =\u003e '\u003ch1\u003eLuke Skywalker\u003c/h1\u003e'\n        ],\n        'weapon' =\u003e 'Lightsaber'\n    ],\n    'Bad guy' =\u003e [\n        'name' =\u003e '\u003ch1\u003eSauron\u003c/h1\u003e',\n        'weapon' =\u003e 'Evil Eye'\n    ]\n];\n\n$result = ArrayToXml::convert($array);\n```\n\nThis code will result in:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003croot\u003e\n    \u003cGood_guy\u003e\n        \u003cname\u003e\u003c![CDATA[\u003ch1\u003eLuke Skywalker\u003c/h1\u003e]]\u003e\u003c/name\u003e\n        \u003cweapon\u003eLightsaber\u003c/weapon\u003e\n    \u003c/Good_guy\u003e\n    \u003cBad_guy\u003e\n        \u003cname\u003e\u0026lt;h1\u0026gt;Sauron\u0026lt;/h1\u0026gt;\u003c/name\u003e\n        \u003cweapon\u003eEvil Eye\u003c/weapon\u003e\n    \u003c/Bad_guy\u003e\n\u003c/root\u003e\n```\n\nIf your input contains something that cannot be parsed a `DOMException` will be thrown.\n\n\n### Customize the XML declaration\n\nYou could specify specific values in for:\n - encoding as the fourth argument (string)\n - version as the fifth argument (string)\n - DOM properties as the sixth argument (array)\n - standalone as seventh argument (boolean)\n\n```php\n$result = ArrayToXml::convert($array, [], true, 'UTF-8', '1.1', [], true);\n```\n\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.1\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n```\n\n\n### Adding attributes to the root element\n\nTo add attributes to the root element provide an array with an `_attributes` key as the second argument. \nThe root element name can then be set using the `rootElementName` key.\n\n```php\n$result = ArrayToXml::convert($array, [\n    'rootElementName' =\u003e 'helloyouluckypeople',\n    '_attributes' =\u003e [\n        'xmlns' =\u003e 'https://github.com/spatie/array-to-xml',\n    ],\n], true, 'UTF-8');\n```\n\n### Using a multi-dimensional array\n\nUse a multi-dimensional array to create a collection of elements.\n```php\n$array = [\n    'Good guys' =\u003e [\n        'Guy' =\u003e [\n            ['name' =\u003e 'Luke Skywalker', 'weapon' =\u003e 'Lightsaber'],\n            ['name' =\u003e 'Captain America', 'weapon' =\u003e 'Shield'],\n        ],\n    ],\n    'Bad guys' =\u003e [\n        'Guy' =\u003e [\n            ['name' =\u003e 'Sauron', 'weapon' =\u003e 'Evil Eye'],\n            ['name' =\u003e 'Darth Vader', 'weapon' =\u003e 'Lightsaber'],\n        ],\n    ],\n];\n```\n\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003chelloyouluckypeople xmlns=\"https://github.com/spatie/array-to-xml\"\u003e\n    \u003cGood_guys\u003e\n        \u003cGuy\u003e\n            \u003cname\u003eLuke Skywalker\u003c/name\u003e\n            \u003cweapon\u003eLightsaber\u003c/weapon\u003e\n        \u003c/Guy\u003e\n        \u003cGuy\u003e\n            \u003cname\u003eCaptain America\u003c/name\u003e\n            \u003cweapon\u003eShield\u003c/weapon\u003e\n        \u003c/Guy\u003e\n    \u003c/Good_guys\u003e\n    \u003cBad_guys\u003e\n        \u003cGuy\u003e\n            \u003cname\u003eSauron\u003c/name\u003e\n            \u003cweapon\u003eEvil Eye\u003c/weapon\u003e\n        \u003c/Guy\u003e\n        \u003cGuy\u003e\n            \u003cname\u003eDarth Vader\u003c/name\u003e\n            \u003cweapon\u003eLightsaber\u003c/weapon\u003e\n        \u003c/Guy\u003e\n    \u003c/Bad_guys\u003e\n\u003c/helloyouluckypeople\u003e\n```\n\n### Using Closure values\nThe package can use Closure values:\n\n```php\n$users = [\n    [\n        'name' =\u003e 'one',\n        'age' =\u003e 10,\n    ],\n    [\n        'name' =\u003e 'two',\n        'age' =\u003e 12,\n    ],\n];\n\n$array = [\n    'users' =\u003e function () use ($users) {\n        $new_users = [];\n        foreach ($users as $user) {\n            $new_users[] = array_merge(\n                $user,\n                [\n                    'double_age' =\u003e $user['age'] * 2,\n                ]\n            );\n        }\n\n        return $new_users;\n    },\n];\n\nArrayToXml::convert($array)\n```\n\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003croot\u003e\n    \u003cusers\u003e\n        \u003cname\u003eone\u003c/name\u003e\n        \u003cage\u003e10\u003c/age\u003e\n        \u003cdouble_age\u003e20\u003c/double_age\u003e\n    \u003c/users\u003e\n    \u003cusers\u003e\n        \u003cname\u003etwo\u003c/name\u003e\n        \u003cage\u003e12\u003c/age\u003e\n        \u003cdouble_age\u003e24\u003c/double_age\u003e\n    \u003c/users\u003e\n\u003c/root\u003e\n```\n\n### Handling numeric keys\n\nThe package can also can handle numeric keys:\n\n```php\n$array = [\n    100 =\u003e [\n        'name' =\u003e 'Vladimir',\n        'nickname' =\u003e 'greeflas',\n    ],\n    200 =\u003e [\n        'name' =\u003e 'Marina',\n        'nickname' =\u003e 'estacet',\n    ],\n];\n\n$result = ArrayToXml::convert(['__numeric' =\u003e $array]);\n```\n\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003croot\u003e\n    \u003cnumeric_100\u003e\n        \u003cname\u003eVladimir\u003c/name\u003e\n        \u003cnickname\u003egreeflas\u003c/nickname\u003e\n    \u003c/numeric_100\u003e\n    \u003cnumeric_200\u003e\n        \u003cname\u003eMarina\u003c/name\u003e\n        \u003cnickname\u003eestacet\u003c/nickname\u003e\n    \u003c/numeric_200\u003e\n\u003c/root\u003e\n```\n\nYou can change key prefix with setter method called `setNumericTagNamePrefix()`.\n\n### Using custom keys\n\nThe package can also can handle custom keys:\n\n```php\n$array = [\n    '__custom:custom-key:1' =\u003e [\n        'name' =\u003e 'Vladimir',\n        'nickname' =\u003e 'greeflas',\n    ],\n    '__custom:custom-key:2' =\u003e [\n        'name' =\u003e 'Marina',\n        'nickname' =\u003e 'estacet',\n        'tags' =\u003e [\n            '__custom:tag:1' =\u003e 'first-tag',\n            '__custom:tag:2' =\u003e 'second-tag',\n        ]\n    ],\n];\n\n$result = ArrayToXml::convert($array);\n```\n\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003croot\u003e\n    \u003ccustom-key\u003e\n        \u003cname\u003eVladimir\u003c/name\u003e\n        \u003cnickname\u003egreeflas\u003c/nickname\u003e\n    \u003c/custom-key\u003e\n    \u003ccustom-key\u003e\n        \u003cname\u003eMarina\u003c/name\u003e\n        \u003cnickname\u003eestacet\u003c/nickname\u003e\n        \u003ctags\u003e\n            \u003ctag\u003efirst-tag\u003c/tag\u003e\n            \u003ctag\u003esecond-tag\u003c/tag\u003e\n        \u003c/tags\u003e\n    \u003c/custom-key\u003e\n\u003c/root\u003e\n```\n\nA custom key contains three, colon-separated parts: \"__custom:[custom-tag]:[unique-string]\".\n\n- \"__custom\"\n  - The key always starts with \"__custom\".\n- [custom-tag]\n  - The string to be rendered as the XML tag.\n- [unique-string]\n  - A unique string that avoids overwriting of duplicate keys in PHP arrays.\n\na colon character can be included within the custom-tag portion by escaping it with a backslash:\n\n```php\n$array = [\n    '__custom:ns\\\\:custom-key:1' =\u003e [\n        'name' =\u003e 'Vladimir',\n        'nickname' =\u003e 'greeflas',\n    ],\n    '__custom:ns\\\\:custom-key:2' =\u003e [\n        'name' =\u003e 'Marina',\n        'nickname' =\u003e 'estacet',\n        'tags' =\u003e [\n            '__custom:ns\\\\:tag:1' =\u003e 'first-tag',\n            '__custom:ns\\\\:tag:2' =\u003e 'second-tag',\n        ]\n    ],\n];\n```\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003croot\u003e\n    \u003cns:custom-key\u003e\n        \u003cname\u003eVladimir\u003c/name\u003e\n        \u003cnickname\u003egreeflas\u003c/nickname\u003e\n    \u003c/ns:custom-key\u003e\n    \u003cns:custom-key\u003e\n        \u003cname\u003eMarina\u003c/name\u003e\n        \u003cnickname\u003eestacet\u003c/nickname\u003e\n        \u003ctags\u003e\n            \u003cns:tag\u003efirst-tag\u003c/ns:tag\u003e\n            \u003cns:tag\u003esecond-tag\u003c/ns:tag\u003e\n        \u003c/tags\u003e\n    \u003c/ns:custom-key\u003e\n\u003c/root\u003e\n```\n\n### Setting DOMDocument properties\n\nTo set properties of the internal DOMDocument object just pass an array consisting of keys and values. For a full list of valid properties consult https://www.php.net/manual/en/class.domdocument.php.\n\nYou can use the constructor to set DOMDocument properties.\n\n```php\n$result = ArrayToXml::convert(\n   $array, \n   $rootElement, \n   $replaceSpacesByUnderScoresInKeyNames, \n   $xmlEncoding, \n   $xmlVersion, \n   ['formatOutput' =\u003e true]\n);\n\n```\n\nAlternatively you can use  `setDomProperties`\n\n```php\n$arrayToXml = new ArrayToXml($array);\n$arrayToXml-\u003esetDomProperties(['formatOutput' =\u003e true]);\n$result = $arrayToXml-\u003etoXml();\n```\n\n### XML Prettification \n\nCall `$arrayToXml-\u003eprettify()` method on ArrayToXml to set XML in pretty form.\n\nExample:\n\n```php\n$array = [\n    'Good guy' =\u003e [\n        'name' =\u003e 'Luke Skywalker',\n        'weapon' =\u003e 'Lightsaber'\n    ],\n    'Bad guy' =\u003e [\n        'name' =\u003e 'Sauron',\n        'weapon' =\u003e 'Evil Eye'\n    ]\n];\n$arrayToXml = new ArrayToXml($array);\n```\n\nWith prettification:\n\n```php\n$arrayToXml-\u003eprettify()-\u003etoXml();\n```\n\nwill result in:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003croot\u003e\n    \u003cGood_guy\u003e\n        \u003cname\u003eLuke Skywalker\u003c/name\u003e\n        \u003cweapon\u003eLightsaber\u003c/weapon\u003e\n    \u003c/Good_guy\u003e\n    \u003cBad_guy\u003e\n        \u003cname\u003eSauron\u003c/name\u003e\n        \u003cweapon\u003eEvil Eye\u003c/weapon\u003e\n    \u003c/Bad_guy\u003e\n\u003c/root\u003e\n```\n\nWithout prettification:\n\n```php\n$arrayToXml-\u003etoXml();\n```\n\nwill result in:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003croot\u003e\u003cGood_guy\u003e\u003cname\u003eLuke Skywalker\u003c/name\u003e\u003cweapon\u003eLightsaber\u003c/weapon\u003e\u003c/Good_guy\u003e\u003cBad_guy\u003e\u003cname\u003eSauron\u003c/name\u003e\u003cweapon\u003eEvil Eye\u003c/weapon\u003e\u003c/Bad_guy\u003e\u003c/root\u003e\n```\n\n### Dropping XML declaration\n\nCall `$arrayToXml-\u003edropXmlDeclaration()` method on ArrayToXml object to omit default XML declaration on top of the generated XML.\n\nExample:\n\n```php\n$root = [\n    'rootElementName' =\u003e 'soap:Envelope',\n    '_attributes' =\u003e [\n        'xmlns:soap' =\u003e 'http://www.w3.org/2003/05/soap-envelope/',\n    ],\n];\n$array = [\n    'soap:Header' =\u003e [],\n    'soap:Body' =\u003e [\n        'soap:key' =\u003e 'soap:value',\n    ],\n];\n$arrayToXml = new ArrayToXml($array, $root);\n\n$result = $arrayToXml-\u003edropXmlDeclaration()-\u003etoXml();\n```\n\nThis will result in:\n\n```xml\n\u003csoap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope/\"\u003e\u003csoap:Header/\u003e\u003csoap:Body\u003e\u003csoap:key\u003esoap:value\u003c/soap:key\u003e\u003c/soap:Body\u003e\u003c/soap:Envelope\u003e\n```\n\n### Adding processing instructions\n\nCall `$arrayToXml-\u003eaddProcessingInstruction($target, $data)` method on ArrayToXml object to prepend a processing instruction before the root element.\n\nExample:\n\n```php\n$arrayToXml = new ArrayToXml($array);\n$arrayToXml-\u003eaddProcessingInstruction('xml-stylesheet', 'type=\"text/xsl\" href=\"base.xsl\"');\n$result = $arrayToXml-\u003etoXml();\n```\n\nThis will result in:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003c?xml-stylesheet type=\"text/xsl\" href=\"base.xsl\"?\u003e\n\u003croot\u003e\u003cGood_guy\u003e\u003cname\u003eLuke Skywalker\u003c/name\u003e\u003cweapon\u003eLightsaber\u003c/weapon\u003e\u003c/Good_guy\u003e\u003cBad_guy\u003e\u003cname\u003eSauron\u003c/name\u003e\u003cweapon\u003eEvil Eye\u003c/weapon\u003e\u003c/Bad_guy\u003e\u003c/root\u003e\n```\n\n## Testing\n\n```bash\nvendor/bin/phpunit\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.\n\n## Security Vulnerabilities\n\nPlease review [our security policy](../../security/policy) on how to report security vulnerabilities.\n\n## Postcardware\n\nYou're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using.\n\nOur address is: Spatie, Kruikstraat 22, 2018 Antwerp, Belgium.\n\nWe publish all received postcards [on our company website](https://spatie.be/en/opensource/postcards).\n\n## Credits\n\n- [Freek Van der Herten](https://github.com/freekmurze)\n- [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n","funding_links":["https://github.com/sponsors/spatie","https://spatie.be/open-source/support-us"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspatie%2Farray-to-xml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspatie%2Farray-to-xml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspatie%2Farray-to-xml/lists"}