What is fast-xml-parser?
The fast-xml-parser npm package is a fast and powerful XML parser and validator that can convert XML to a JavaScript object, JSON, or a traversable JS object. It can also convert a JS object to XML. It is designed to be very fast and efficient, and it provides various options to control the XML parsing and validation process.
What are fast-xml-parser's main functionalities?
XML to JSON Conversion
Converts XML data to a JSON object. The 'parse' function takes an XML string and optional options object, and returns a JSON representation of the XML.
const { parse } = require('fast-xml-parser');
const xmlData = '<note><to>User</to><from>Library</from><heading>Reminder</heading><body>Don't forget to subscribe.</body></note>';
const options = {};
const jsonObj = parse(xmlData, options);
JSON to XML Conversion
Converts a JSON object to an XML string. The 'j2xParser' constructor takes an options object, and the 'parse' method converts the JSON object to an XML string.
const { j2xParser } = require('fast-xml-parser');
const parser = new j2xParser({});
const jsonObj = { note: { to: 'User', from: 'Library', heading: 'Reminder', body: 'Don't forget to subscribe.' } };
const xmlData = parser.parse(jsonObj);
XML Validation
Validates the XML string. The 'validate' function checks if the given XML string is well-formed and returns a validation result.
const { validate } = require('fast-xml-parser');
const xmlData = '<note><to>User</to><from>Library</from></note>';
const validationResult = validate(xmlData);
Traversable Object Creation
Creates a traversable JavaScript object from XML. The 'XMLParser' constructor creates a parser instance, and the 'parse' method converts the XML string into a traversable JS object.
const { XMLParser } = require('fast-xml-parser');
const xmlData = '<note><to>User</to><from>Library</from></note>';
const parser = new XMLParser();
const traversableObject = parser.parse(xmlData);
Other packages similar to fast-xml-parser
xml2js
xml2js is a similar npm package that provides XML to JavaScript object conversion. It includes options to customize the parsing process and supports builder options for converting back to XML. Compared to fast-xml-parser, xml2js may be slower but offers a more feature-rich API for handling complex XML structures.
xml-js
xml-js is another npm package that converts XML text to a JavaScript object and vice versa. It can also convert XML to JSON and supports compact and non-compact modes. While fast-xml-parser focuses on speed, xml-js provides a more extensive set of conversion options.
libxmljs
libxmljs is a Node.js package that provides bindings to the libxml C library. It allows for parsing and serializing XML and includes XPath and XSLT support. It is different from fast-xml-parser in that it is a binding to a native library, which may offer performance benefits and additional XML processing features.
Validate XML or Parse XML to JS/JSON very fast without C/C++ based libraries and no callback
You can use this library online (press try me button above), or as command from CLI, or in your website, or in npm repo.
- This library let you validate the XML data syntactically.
- Or you can transform/covert/parse XML data to JS/JSON object.
- Or you can transform the XML in traversable JS object which can later be converted to JS/JSON object.
How to use
Installation
$npm install fast-xml-parser
or using yarn
$yarn add fast-xml-parser
Usage
var fastXmlParser = require('fast-xml-parser');
var jsonObj = fastXmlParser.parse(xmlData);
var options = {
attrPrefix : "@_",
textNodeName : "#text",
ignoreNonTextNodeAttr : true,
ignoreTextNodeAttr : true,
ignoreNameSpace : true,
ignoreRootElement : false,
textNodeConversion : true,
textAttrConversion : false
};
if(fastXmlParser.validate(xmlData)=== true){
var jsonObj = fastXmlParser.parse(xmlData,options);
}
var tObj = fastXmlParser.getTraversalObj(xmlData,options);
var jsonObj = fastXmlParser.convertToJson(tObj);
To use from command line
$xml2js [-ns|-a] <filename> [-o outputfile.json]
To use it on webpage
- Download and include parser.js
var isValid = parser.validate(xmlData);
var jsonObj = parser.parse(xmlData);
Comparision
I decided to created this library when I couldn't find any library which can convert XML data to json without any callback and which is not based on any C/C++ library.
Libraries that I compared
- xml-mapping : fast, result is not satisfactory
- xml2js : fast, result is not satisfactory
- xml2js-expat : couldn't test performance as it gives error on high load. Installation failed on travis and on my local machine using 'yarn'.
- xml2json : based on node-expat which is based on C/C++. Installation failed on travis.
- fast-xml-parser : very very fast.
Why not C/C++ based libraries?
Installation of such libraries fails on some OS. You may require to install missing dependency manually.
Benchmark report
Don't forget to check the performance report on comparejs.
validator benchmark: 21000 tps
Limitation
Parser doesn't check if the XML is valid or not. If the XML is not valid you may get invalid result. So you can call the validator function first to check the structure.
Report an issue or request for a feature here
Your contribution in terms of donation, testing, bug fixes, code development etc. can help me to write fast algorithms.
Give me a star, if you really like this project.
Fund collected (since the starting of the project) : $0
Some of my other NPM pojects
- stubmatic : A stub server to mock behaviour of HTTP(s) / REST / SOAP services. Stubbing redis is on the way.
- compare js : compare the features of JS code, libraries, and NPM repos.
- fast-lorem-ipsum : Generate lorem ipsum words, sentences, paragraph very quickly.
TODO
- P2: parser online demo with more options
- P2: validator cli
- P2: fast XML prettyfier