JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 288
  • Score
    100M100P100Q89327F
  • License MIT

Helps you convert XML into an object for easy reading.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (xml2o) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    xml2o

    Helps you convert XML into an object for easy reading.

    Getting Started

    Install the package:

    npm i -S xml2o

    Let's convert XML from stream:

    import {convertStream} from 'xml2o';
    import {createReadStream} from 'fs';
    
    const node = convertStream(createReadStream('/path/to/file.xml'));

    We can doing same with string:

    import {convertString} from 'xml2o';
    
    const node = convertString('<node><foo bar="bar">foo</foo></node>');

    Examples

    A SimpleXML-like Node object made to help you read XML structures in JS without DOM.

    Check a node

    import {convertString} from 'xml2o';
    
    const xml = `<node>
        <foo bar="bar">foo</foo>
        <list>
            <baz id="1" name="baz 1" />
            <baz id="2" name="baz 2" />
            <baz id="3" name="baz 3" />
        </list>
    </node>`;
    
    const node = convertString(xml);
    console.log(node);

    Root of a node, name and inner text

    console.log(
        node.name,
        node.text
    );

    Child node name, text and attributes

    console.log(
        node[0].name,
        node[0].text,
        node[0].getAttribute('bar'),
        node[0].getAttributeNode('bar'),
        node[0].getAttributes()
    )

    Node children

    console.log(...node.map(child => child.name));

    Node query

    import {convertString} from 'xml2o';
    
    const xml = `<node>
        <a/>
        <b>
            <a/>
            <a/>
            <c><a/></c>
        </b>
        <d>
            <c><a/></c>
        </d>
    </node>`;
    
    const node = convertString(xml);
    console.log(node.query('/a')); // found /node/a
    console.log(node.query('a')); // found /node/a, /node/b/a, /node/b/c/a, /node/d/c/a
    console.log(node.query('c/a')); // found /node/b/c/a, /node/d/c/a
    console.log(node.query('/d/c')); // found /node/d/c
    console.log(node.query('b/a')); // found /node/b/a

    Documentation

    Method Arguments Return Description
    convertString XMLString Node XML string
    convertStream stream Node Readable stream

    Node

    Node class used to present XML nodes as objects. Every Node object has following properties and methods:

    Properties

    Property Description
    name Tag name
    local Tag local name
    prefix Tag prefix
    parent Parent Node
    root Root Node

    Methods

    Method Arguments Return Description
    getAttribute name, uri? string Returns an attribute value
    getAttributeNode name, uri? Attribute Returns an attribute
    getAttributes Array<string> Returns an array of attributes values
    hasAttribute name, uri? boolean Returns true if an attribute is exists
    query name, uri? Array<Node> Returns matched nodes in any level

    Note

    Code examples written with modules so you may need babel, typescript or other to run its or rewrite ES6 imports to:

    const createString = require('xml2o').createString;

    This library written in ES6 and if you need ES3 build you can tell me i'll make support for older JS versions.

    License

    MIT