https://github.com/formix/damn-simple-xml
XML serialization library aiming to simplify a programmer's life
https://github.com/formix/damn-simple-xml
Last synced: about 1 year ago
JSON representation
XML serialization library aiming to simplify a programmer's life
- Host: GitHub
- URL: https://github.com/formix/damn-simple-xml
- Owner: formix
- License: mit
- Created: 2014-08-30T16:49:03.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2015-08-05T17:51:26.000Z (almost 11 years ago)
- Last Synced: 2025-04-28T18:06:17.909Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 833 KB
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://waffle.io/formix/damn-simple-xml)
damn-simple-xml [](https://travis-ci.org/search/damn-simple-xml)
===============
[](https://gitter.im/formix/damn-simple-xml?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Dams Simple XML DSX is optimized to serialize JavaScript objects and deserialize
XML elements that have been formerly serialized from an object in another
programming language (or by DSX). DSX is not designed to handle any kind of
free form XML documents. DSX have a small memory footprint. It is the only
XML library that can handle CDATA sections for both serialization and
deserialization.
[Google Group](https://groups.google.com/forum/?hl=fr#!forum/damn-simple-xml)
## Documentation and Release Notes
Consult the full [API Reference](https://github.com/formix/damn-simple-xml/wiki/Api-Reference) for detailed documentation.
Consult The [Release Notes](https://github.com/formix/damn-simple-xml/wiki/Release-Notes) here.
## Usage
The following usage scenarios are oversimplified. with DSX, you can fine tune
and control each serialization behaviors. You can choose to define a field to be
serialized as an attribute, a CDATA or define a collection child
elements' name. For more informations, see
[API Reference](https://github.com/formix/damn-simple-xml/wiki/Api-Reference)
reference
### Serialization
By default, all fields of an object will be serialized as a XML element. You
can control serialization by providing a `behavior` object telling Damn
Simple Xml how to serialize attributes texts, CDATA, arrays and arrays'
items fields:
```javascript
var Serializer = require("damn-simple-xml");
var serializer = new Serializer();
var employees = [
{
id: 123,
department: "Marketting",
fullname: "John Doe",
emails: [
{
type: "home",
value: "jd@home.com"
},
{
type: "work",
value: "jd@work.com"
}
]
},
{
id: 456,
department: "Administration",
fullname: "Jane Dowell",
emails: [
{
type: "home",
value: "jane_dowell@home.com"
}
]
}
];
var xml = "";
serializer.serialize({
name: "employees",
data: employees
}, function(err, xmlpart, level) {
if (err) {
console.log(err);
return;
}
xml += xmlpart;
if (level === 0) { // 0 means seialization is done
console.log(xml);
}
});
```
The previous code will result in a one line unformatted xml corresponding to:
```xml
123
Marketting
John Doe
home
jd@home.com
work
jd@work.com
456
Administration
Jane Dowell
home
jane_dowell@home.com
```
### Deserialization
When unspecified, free text beside other XML elements is added to the "_text"
field by default.
Given the following XML:
```xml
This employee is terrible!
John
Doe
jdoe@work.com
john.doe@nobody.com
```
```javascript
var Serializer = require("damn-simple-xml");
var serializer = new Serializer();
serializer.deserialize(xml, function(err, root) {
console.log(root);
});
```
Will display the following Javascritp object:
```javascript
{
name: "employee",
data: {
_text: "This employee is terrible!",
firstName: "John",
lastName: "Doe",
emails: [
{
type: "work",
value: "jdoe@work.com"
},
{
type: "personal",
value: "john.doe@nobody.com"
}
]
}
}
```