# xml-writer

> Native and full Javascript implementation of the classic XMLWriter class

Latest version **1.7.0** (published 2017-02-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install xml-writer
pnpm add xml-writer
yarn add xml-writer
bun add xml-writer
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.7.0 |
| Published | 2017-02-20 |
| First published | 2011-11-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.4.0 |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 60 |
| Author | Nicolas Thouvenin |
| Maintainers | touv |
| Keywords | xml, writer, XMLWriter, generator |

## Links

- npm: https://www.npmjs.com/package/xml-writer
- Repository: https://github.com/touv/node-xml-writer
- Homepage: http://github.com/touv/node-xml-writer
- Issues: https://github.com/touv/node-xml-writer/issues
- npm.io page: https://npm.io/package/xml-writer

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 1.7.0 (latest) — 2017-02-20
- 1.6.0 — 2014-11-14
- 1.5.0 — 2014-09-18
- 1.4.2 — 2014-08-07
- 1.4.1 — 2013-10-07
- 1.4.0 — 2013-08-30
- 1.3.1 — 2013-07-18
- 1.2.4 — 2013-02-07
- 1.2.3 — 2012-09-16
- 1.2.2 — 2012-07-26
- 1.2.1 — 2012-07-26
- 1.2.0 — 2012-06-27
- 1.1.1 — 2012-06-06
- 1.0.7 — 2012-06-04
- 1.0.6 — 2012-05-23
- … 6 more at https://npm.io/package/xml-writer/versions

## README

# XMLWriter for NodeJS

[![Build Status](https://secure.travis-ci.org/touv/node-xml-writer.png?branch=master)](http://travis-ci.org/touv/node-xml-writer)

It's native and full javascript implementation of the classic XMLWriter class.
The API is complete, flexible and tolerant.
XML is still valid.

## Contributors

  * [Nicolas Thouvenin](https://github.com/touv)
  * [Anton Zem](https://github.com/AlgoTrader)
  * [Chip Lee](https://github.com/chipincode)
  * [Peecky](https://github.com/peecky)
  * [Julian Scheid](https://github.com/jscheid)
  * [Guillaume Plique](https://github.com/Yomguithereal)

# Installation

With [npm](http://npmjs.org) do:

    $ npm install xml-writer


# Examples

## Basic
```javascript
	var XMLWriter = require('xml-writer');
	xw = new XMLWriter;
	xw.startDocument();
	xw.startElement('root');
	xw.writeAttribute('foo', 'value');
	xw.text('Some content');
	xw.endDocument();

	console.log(xw.toString());
```
Output:

	<?xml version="1.0"?>
	<root foo="value">Some content</root>

Tip: If you want your XML **indented** use `new XMLWriter(true)` or `new XMLWriter('\t')`, for instance, if you want to use a custom string for indentation.

## Chaining
```javascript
	var XMLWriter = require('xml-writer');
	xw = new XMLWriter;
	xw.startDocument().startElement('root').writeAttribute('foo', 'value').writeElement('tag', 'Some content');

	console.log(xw.toString());
```
Output:

	<?xml version="1.0"?>
	<root foo="value"><tag>Some content</tag></root>

## Tolerant
```javascript
	var XMLWriter = require('xml-writer');
	xw = new XMLWriter;
	xw.startElement('root').writeAttribute('foo', 'value').text('Some content');

	console.log(xw.toString());
```
Output:

	<root foo="value">Some content</root>


## Extensible
```javascript
	var XMLWriter = require('xml-writer'),
               fs = require('fs');
	var ws = fs.createWriteStream('/tmp/foo.xml');
	ws.on('close', function() {
			console.log(fs.readFileSync('/tmp/foo.xml', 'UTF-8'));
	});
	xw = new XMLWriter(false, function(string, encoding) {
			ws.write(string, encoding);
	});
	xw.startDocument('1.0', 'UTF-8').startElement(function() {
		return 'root';
	}).text(function() {
		return 'Some content';
	});
	ws.end();
```

Output:

	<?xml version="1.0" encoding="UTF-8"?>
	<root>Some content</root>


# Tests

Use [nodeunit](https://github.com/caolan/nodeunit) to run the tests.

    $ npm install nodeunit
    $ nodeunit test

# API Documentation

## Generic

### constructor XMLWriter(Boolean|String indent, Function writer(string, encoding))
Create an new writer

### text(String content)
Write text

### writeRaw
Write a raw XML text

## Document
### startDocument(String version = '1.0', String encoding = NULL, Boolean standalone = false)
Create document tag

### endDocument()
End current document

## Element

### writeElement(String name, String content)
Write full element tag

### writeElementNS
Write full namespaced element tag

### startElementNS
Create start namespaced element tag

### startElement(String name)
Create start element tag

### endElement()
End current element

## Attributes

### writeAttribute(String name, String value)
Write full attribute

### writeAttributeNS
Write full namespaced attribute

### startAttributeNS
Create start namespaced attribute

### startAttribute(String name)
Create start attribute

### endAttribute()
End attribute

## Processing Instruction

### writePI(String name, String content)
Writes a PI

### startPI(String name)
Create start PI tag

### endPI()
End current PI

## DocType

### writeDocType(String name, String pubid, String sysid, String subset)
Write a DocType

### startDocType(String name, String pubid, String sysid, String subset)
Create start DocType tag

### endDocType()
End current DocType

## CData

### writeCData(String content)
Write full CDATA tag

### startCData()
Create start CDATA tag

### endCData()
End current CDATA

## Comment

### writeComment(String content)
Write full comment tag

### startComment()
Create start comment

### endComment()
Create end comment

# Also

* https://github.com/minchenkov/simple-xml-writer
* https://github.com/wezm/node-genx

# License

[MIT/X11](./LICENSE)


[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/touv/node-xml-writer/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

---
_Source: https://npm.io/package/xml-writer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
