damn-simple-xml
XML serialization library meant to simplify programmer's life
Last updated 5 years ago by formix .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install damn-simple-xml 
SYNC missed versions from official npm registry.

damn-simple-xml travis-ci build result

Join the chat at https://gitter.im/formix/damn-simple-xml

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

Documentation and Release Notes

Consult the full API Reference for detailed documentation.

Consult The 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 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:

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:

<employees>
  <employee>
    <id>123</id>
    <department>Marketting</department>
    <fullname>John Doe</fullname>
    <emails>
      <emailsItem>
        <type>home</type>
        <value>jd@home.com</value>
      </emailsItem>
      <emailsItem>
        <type>work</type>
        <value>jd@work.com</value>
      </emailsItem>
    </emails>
  </employee>
  <employee>
    <id>456</id>
    <department>Administration</department>
    <fullname>Jane Dowell</fullname>
    <emails>
      <emailsItem>
        <type>home</type>
        <value>jane_dowell@home.com</value>
      </emailsItem>
    </emails>
  </employee>
</employees>

Deserialization

When unspecified, free text beside other XML elements is added to the "_text" field by default.

Given the following XML:

<employee>
  This employee is terrible!
  <firstName>John</firstName>
  <lastName>Doe</lastName>
  <emails>
    <email type="work">jdoe@work.com</email>
    <email type="personal">john.doe@nobody.com</email>
  <emails>
</employee>
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:

{
  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"
      }
    ]
  }
}

Current Tags

  • 1.2.0                                ...           latest (5 years ago)

15 Versions

  • 1.2.0                                ...           5 years ago
  • 1.1.3                                ...           5 years ago
  • 1.1.2                                ...           5 years ago
  • 1.1.1                                ...           5 years ago
  • 1.1.0                                ...           5 years ago
  • 1.0.0                                ...           6 years ago
  • 0.6.0                                ...           6 years ago
  • 0.5.7                                ...           6 years ago
  • 0.5.6                                ...           6 years ago
  • 0.5.5                                ...           6 years ago
  • 0.5.4                                ...           6 years ago
  • 0.5.3                                ...           6 years ago
  • 0.5.2                                ...           6 years ago
  • 0.5.1                                ...           6 years ago
  • 0.5.0                                ...           6 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (2)
Dev Dependencies (1)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |