UNPKG

jsonxml

Version:
84 lines (71 loc) 2.05 kB
# JSONXML A small and simple JSON to XML converter. ## Why? Because I needed one small library, without any dependency and I needed it to treat arrays as repeating elements. ## How to use ```npm install jsonxml``` Then, in your code: ``` const jsonxml = require('jsonxml') let XMLstring = jsonxml(JSONObject, options) ``` JSONXML will transform this object ``` { "ListOfItems": { "Item": [ { "a_key": "a string value", "b_key": 42 }, { "a_key": null, "RepeatItem": [ { "b_key": "another value" }, { "c_key": "" } ], "SubItem": { "d_key": "last value" } } ] } } ``` into this XML string ``` <ListOfItems> <Item> <a_key>a string value</a_key> <b_key>42</b_key> </Item> <Item> <a_key>null</a_key> <RepeatItem> <b_key>another value</b_key> </RepeatItem> <RepeatItem> <c_key></c_key> </RepeatItem> <SubItem> <d_key>last value</d_key> </SubItem> </Item> </ListOfItems> ``` - As of now, only JSON-compatible types are supported. Those are: object, array, string, number, boolean and null. - Literals are outputted as-is. - The options object supports the following properties: - header: if ```true```, will output a standard XML header; if a string, will be used as header. - root: a string to be used as a root tag. - indent: if ```true```, will prettyprint the output with tabs; if a string, will be used to indent the prettyprinted output. ## TODO - Parse tag attributes. - Handle CDATA. - Handle more JS types such as Date or Map. - Optionally Escape strings. - Optionally use arrays as ordered objects. - Optionally output empty tags. - Optionally change the way null is outputted. - Validate XML tag names. - Some leftover error checking.