
Security News
New CVE Forecasting Tool Predicts 47,000 Disclosures in 2025
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
fast-xml-parser-ordered
Advanced tools
Validate XML or Parse XML to JS/JSON very fast without C/C++ based libraries
Fast-Xml-Parser, except Tags are processed in order and returned as an array rather than object.
Example XML:
<note>
<text>the</text>
<text>quick</text>
<b>brown</b>
<b>fox</b>
<i>jumps</b>
<b>
<i>over</i>
</b>
<text>the lazy dog</text>
</note>
Result:
{
"tag":"!xml",
"children":[
{
"tag":"note",
"children":[
{
"tag":"text",
"#text":"the"
},
{
"tag":"text",
"#text":"quick"
},
{
"tag":"b",
"#text":"brown"
},
{
"tag":"b",
"#text":"fox"
},
{
"tag":"i",
"#text":"jumps"
},
{
"tag":"b",
"children":[
{
"tag":"i",
"#text":"over"
}
]
},
{
"tag":"text",
"#text":"the lazy dog"
}
]
}
]
}
Validate XML, Parse XML to JS/JSON and vice versa, or parse XML to Nimn rapidly without C/C++ based libraries and no callback
This project welcomes contributors. If you have a feature you'd like to see implemented or a bug you'd liked fixed, the best and fastest way to make that happen is to implement it and submit a PR. Basic knowledge of JS is sufficient. Feel free to ask for any guidance.
List of some applications/projects using Fast XML Parser. (Raise an issue to submit yours)
To use it in NPM package install it first
$npm install fast-xml-parser
or using yarn $yarn add fast-xml-parser
To use it from CLI Install it globally with -g
option.
$npm install fast-xml-parser -g
To use it on a webpage include it from a CDN
var jsonObj = parser.parse(xmlData [,options] );
var parser = require('fast-xml-parser');
var he = require('he');
var options = {
attributeNamePrefix : "@_",
attrNodeName: "attr", //default is 'false'
textNodeName : "#text",
ignoreAttributes : true,
ignoreNameSpace : false,
allowBooleanAttributes : false,
parseNodeValue : true,
parseAttributeValue : false,
trimValues: true,
cdataTagName: "__cdata", //default is 'false'
cdataPositionChar: "\\c",
localeRange: "", //To support non english character in tag/attribute values.
parseTrueNumberOnly: false,
attrValueProcessor: a => he.decode(a, {isAttributeValue: true}),//default is a=>a
tagValueProcessor : a => he.decode(a) //default is a=>a
};
if( parser.validate(xmlData) === true) { //optional (it'll return an object in case it's not valid)
var jsonObj = parser.parse(xmlData,options);
}
// Intermediate obj
var tObj = parser.getTraversalObj(xmlData,options);
var jsonObj = parser.convertToJson(tObj,options);
localeRange: "a-zA-Zа-яёА-ЯЁ"
$xml2js [-ns|-a|-c|-v|-V] <filename> [-o outputfile.json]
$cat xmlfile.xml | xml2js [-ns|-a|-c|-v|-V] [-o outputfile.json]
var result = parser.validate(xmlData);
if (result !== true) console.log(result.err);
var jsonObj = parser.parse(xmlData);
var Parser = require("fast-xml-parser").j2xParser;
//default options need not to set
var defaultOptions = {
attributeNamePrefix : "@_",
attrNodeName: "@", //default is false
textNodeName : "#text",
ignoreAttributes : true,
cdataTagName: "__cdata", //default is false
cdataPositionChar: "\\c",
format: false,
indentBy: " ",
supressEmptyNode: false,
tagValueProcessor: a=> he.encode(a, { useNamedReferences: true}),// default is a=>a
attrValueProcessor: a=> he.encode(a, {isAttributeValue: isAttribute, useNamedReferences: true})// default is a=>a
};
var parser = new Parser(defaultOptions);
var xml = parser.parse(json_or_js_obj);
With the correct options, you can get the almost original XML without losing any information.
when
format is set to true
true
, tags with no value (text or nested tags) are written as self closing tags.file size | fxp 3.0 validator (rps) | fxp 3.0 parser (rps) | xml2js 0.4.19 (rps) |
---|---|---|---|
1.5k | 16581.06758 | 14032.09323 | 4615.930805 |
1.5m | 14918.47793 | 13.23366098 | 5.90682005 |
13m | 1.834479235 | 1.135582008 | -1 |
1.3k with CDATA | 30583.35319 | 43160.52342 | 8398.556349 |
1.3m with CDATA | 27.29266471 | 52.68877009 | 7.966000795 |
1.6k with cdata,prolog,doctype | 27690.26082 | 41433.98547 | 7872.399268 |
98m | 0.08473858148 | 0.2600104004 | -1 |
file size | fxp 3.2 js to xml | xml2js 0.4.19 builder |
---|---|---|
1.3k | 160148.9801 | 10384.99401 |
1.1m | 173.6374831 | 8.611884025 |
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
FAQs
Validate XML or Parse XML to JS/JSON very fast without C/C++ based libraries
The npm package fast-xml-parser-ordered receives a total of 330 weekly downloads. As such, fast-xml-parser-ordered popularity was classified as not popular.
We found that fast-xml-parser-ordered demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.