Socket
Socket
Sign inDemoInstall

xmlbuilder

Package Overview
Dependencies
0
Maintainers
1
Versions
98
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    xmlbuilder

An XML builder for node.js


Version published
Weekly downloads
25M
increased by2.84%
Maintainers
1
Install size
429 kB
Created
Weekly downloads
 

Package description

What is xmlbuilder?

The xmlbuilder npm package is a utility that allows for the easy creation of XML documents with a simple and readable API. It provides a way to build XML documents from JavaScript objects, and it supports various customization options for attributes, namespaces, and more.

What are xmlbuilder's main functionalities?

Creating an XML document

This feature allows you to create a complete XML document. You can specify attributes with '@' and text content with '#text'.

{"root":{"xmlbuilder":{"@version":"1.0","@encoding":"UTF-8","foo":{"@bar":"baz","#text":"Hello xmlbuilder!"}}}}

Customizing XML declaration

This feature allows you to customize the XML declaration by specifying the version, encoding, and standalone attributes.

{"declaration":{"@version":"1.0","@encoding":"UTF-8","@standalone":"yes"},"root":{"foo":"bar"}}

Adding attributes

This feature allows you to add attributes to an element. Attributes are prefixed with '@' and can be combined with text content.

{"root":{"ele":{"@id":"1","@name":"test","#text":"An element with attributes"}}}

Creating comments

This feature allows you to insert comments into your XML document using the '#comment' key.

{"root":{"#comment":"This is a comment","foo":"bar"}}

Building from an object

This feature allows you to build an XML document from a JavaScript object, with nested elements represented as nested objects.

{"root":{"ele":{"subele":"text","subele2":"text2"}}}

Other packages similar to xmlbuilder

Changelog

Source

[11.0.0] - 2019-02-18

  • Calling end() with arguments no longer overwrites writer options. See #120.

  • Added writer state and customizable space and endline functions to help customize writer behavior. Also added openNode and closeNode functions to writer. See #193.

  • Fixed a bug where writer functions would not be called for nodes with a single child node in pretty print mode. See #195.

  • Renamed elEscape to textEscape in XMLStringifier.

  • Fixed a bug where empty arrays would produce child nodes. See #190.

  • Removed the skipNullAttributes option. null attributes are now skipped by default. Added the keepNullAttributes option in case someone needs the old behavior.

  • Removed the skipNullNodes option. null nodes are now skipped by default. Added the keepNullNodes option in case someone needs the old behavior.

  • undefined values are now skipped when converting JS objects.

  • Renamed stringify functions. See #194:

    • eleName -> name
    • attName -> name
    • eleText -> text
  • Fixed argument order for attribute function in the writer. See #196.

  • Added openAttribute and closeAttribute functions to writer. See #196.

  • Added node types to node objects. Node types and writer states are exported by the module with the nodeType and writerState properties.

  • Fixed a bug where array items would not be correctly converted. See #159.

  • Fixed a bug where mixed-content inside JS objects with #text decorator would not be correctly converted. See #171.

  • Fixed a bug where JS objects would not be expanded in callback mode. See #173.

  • Fixed a bug where character validation would not obey document's XML version. Added separate validation for XML 1.0 and XML 1.1 documents. See #169.

  • Fixed a bug where names would not be validated according to the spec. See #49.

  • Renamed text property to value in comment and cdata nodes to unify the API.

  • Removed doctype function to prevent name clash with DOM implementation. Use the dtd function instead.

  • Removed dummy nodes from the XML tree (Those were created while chain-building the tree).

  • Renamed attributesproperty to attribs to prevent name clash with DOM property with the same name.

  • Implemented the DOM standard (read-only) to support XPath lookups. XML namespaces are not currently supported. See #122.

Readme

Source

xmlbuilder-js

An XML builder for node.js similar to java-xmlbuilder.

License NPM Version NPM Downloads

Travis Build Status AppVeyor Build status Dev Dependency Status Code Coverage

Installation:

npm install xmlbuilder

Usage:

var builder = require('xmlbuilder');
var xml = builder.create('root')
  .ele('xmlbuilder')
    .ele('repo', {'type': 'git'}, 'git://github.com/oozcitak/xmlbuilder-js.git')
  .end({ pretty: true});

console.log(xml);

will result in:

<?xml version="1.0"?>
<root>
  <xmlbuilder>
    <repo type="git">git://github.com/oozcitak/xmlbuilder-js.git</repo>
  </xmlbuilder>
</root>

It is also possible to convert objects into nodes:

builder.create({
  root: {
    xmlbuilder: {
      repo: {
        '@type': 'git', // attributes start with @
        '#text': 'git://github.com/oozcitak/xmlbuilder-js.git' // text node
      }
    }
  }
});

If you need to do some processing:

var root = builder.create('squares');
root.com('f(x) = x^2');
for(var i = 1; i <= 5; i++)
{
  var item = root.ele('data');
  item.att('x', i);
  item.att('y', i * i);
}

This will result in:

<?xml version="1.0"?>
<squares>
  <!-- f(x) = x^2 -->
  <data x="1" y="1"/>
  <data x="2" y="4"/>
  <data x="3" y="9"/>
  <data x="4" y="16"/>
  <data x="5" y="25"/>
</squares>

See the wiki for details and examples for more complex examples.

Keywords

FAQs

Last updated on 18 Feb 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc