XML Body Parser
Adds XML parsing to the body-parser library, so you can convert incoming XML data into a JSON representation.
npm install express body-parser body-parser-xml
This library adds an
xml method to the
Initialise like so:
const bodyParser = require('body-parser'); require('body-parser-xml')(bodyParser);
Once initialised, you can use it just like any other
const app = require('express')(); app.use(bodyParser.xml());
req.body for your route handlers to use.
An XML-based request is determined by the value of the
Content-Type header. By default, any
Content-Type header ending in
+xml will be parsed as XML. For example, the following Content-Types will all match:
If you need to match against a custom
Content-Type header, pass in the
type to match as an option (see below).
You can also pass in options:
options object accepts any of the following keys:
Specify the default character set for the text content if the charset is not specified in the
Content-Type header of the request. Defaults to
When set to
true, then deflated (compressed) bodies will be inflated; when
false, deflated bodies are rejected. Defaults to
Controls the maximum request body size. If this is a number, then the value specifies the number of bytes; if it is a string, the value is passed to the bytes library for parsing. Defaults to
The type option is used to determine what media type the middleware will parse. This option can be a string, array of strings, or a function. If not a function, type option is passed directly to the type-is library and this can be an extension name (like xml), a mime type (like application/xml), or a mime type with a wildcard (like / or _/xml). If a function, the type option is called as fn(req) and the request is parsed if it returns a truthy value. Defaults to
verify option, if supplied, is called as
verify(req, res, buf, encoding), where
buf is a
Buffer of the raw request body and
encoding is the encoding of the request. The parsing can be aborted by throwing an error.
This option controls the behaviour of the XML parser. You can pass any option that is supported by the xml2js library: see here for a list of these options.
This library was born out of a frustration that express-xml-bodyparser, the most popular XML-parsing library for express, doesn't support the regular
body-parser options - in particular, limiting the payload size.
This library was written to use
body-parser's text parser under the hood, and then passes the parsed string into the XML parser. We can therefore take advantage of
body-parser's regular options, and support limiting the payload size, amongst other things.