koa-xml-parser
Version:
Simple XML parsing middleware for Koa 2.x
69 lines (51 loc) • 2.26 kB
Markdown
add koa-xml-parser
```
``` javascript
const Koa = require('koa');
const xmlParser = require('koa-xml-parser');
// Configuration object can be omitted, in this case default properties are used
const parseXML = xmlParser({
limit: '1MB', // Reject payloads larger than 1 MB
encoding: 'UTF-8', // Explicitly set UTF-8 encoding
xml: {
normalize: true, // Trim whitespace inside text nodes
normalizeTags: true, // Transform tags to lowercase
explicitArray: false // Only put nodes in array if >1
}
});
const app = new Koa();
app.use(parseXML);
```
This will parse any XML-based request and place it as an object on `context.req.body` and
`context.request.body` the same way most body parsers do.
An XML-based request is determined by the value of the `Content-Type` header. By default, any
`Content-Type` header ending in `/xml` or `+xml` is assumed to be XML and is parsed. For
example, the following headers will all match:
- `text/xml`
- `application/xml`
- `application/rss+xml`
If you need to match against a custom `Content-Type`, you can pass in the `type` property to a
configuration object.
As shown above, instead of relying on library defaults, you can pass custom configuration
options to the parser building function. `config` object has the following parameters:
- `type` - either a string or an array of strings representing content type(s) indicating
that body should be parsed. Types must conform to a format of
[type-is](https://github.com/jshttp/type-is) library.
- `encoding` - a string representing explicit request encoding. `UTF-8` by default.
- `limit` - a number or a string representing the request size limit. `1mb` by default.
- `xml` - an object containing configuration object for
[xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) library that is used to parse XML
internally. You can refer to the library's
[documentation](https://github.com/Leonidas-from-XIV/node-xml2js#options)
for a full list of options with their corresponding possible values.
## Test
``` shell
$ yarn test
```
## License
[3-Clause BSD](https://github.com/imcrazytwkr/koa-xml-parser/blob/master/LICENSE)
``` shell
$ yarn