Have ideas to improve npm?Join in the discussion! »

    common-xml-features
    TypeScript icon, indicating that this package has built-in type declarations

    3.3.0 • Public • Published

    Introduction

    When working on Electron, you may have the same code executed in the renderer process and in the master/node process.

    It could be an issue if you have to manage XML :

    • Which XML libraries to use in a node process ?
    • How code could be the same in both contexts (renderer, node) ?
    • Impact of the XML libraries in the size of the browserify'ied files ?

    Many browser supports natively XML features like DOMParser, XMLSerializer,... it would be a shame to not use Chrome's implementations when hosted in a renderer process.

    Purposes

    Purposes of this package are :

    • whatever the context, provide a common API for accessing XM features
    • when loaded in a node context
    • when loaded in a renderer context
      • fallbacks to native implementation and prevent xmldom and xmlpath to be inlined by browserify

    Samples

    import * as XMLFeatures from 'common-xml-features';
     
    let xmlDoc = new XMLFeatures.DOMParser().parseFromString(result, 'text/xml');
    if (XMLFeatures.getParserError(xmlDoc)) {
        // we are in trouble !
    }
     
    let entityResult = xmlDoc.evaluate('//html//body//iframe//@src', null, null, XMLFeatures.XPathResult.FIRST_ORDERED_NODE_TYPE, null);
    assert(entityResult.nodeType === XMLFeatures.Node.ELEMENT_NODE)
    ...
    let xmlDoc = new XMLFeatures.domImplementation.createDocument(null, null, null);
    ...
    let xmlSerializer = new XMLFeatures.XMLSerializer();
    let transferData = xmlSerializer.serializeToString(xmlDoc);

    API

    You have to use proxy to be redirected to the right class factory according to the context :

    • (common-xml-features).DOMImplementation
    • (common-xml-features).DOMParser
    • (common-xml-features).XMLSerializer Other objects like Node, Element, Document are pure interfaces and are created through methods of classes above.

    Some interfaces are exported as well :

    • (common-xml-features).XPathResult
    • (common-xml-features).XPathExpression
    • (common-xml-features).XPathNSResolver

    A helper function (experimental, returned value is not yet defined) for checking if the document is a content

    • (common-xml-features).getParserError You can check if it returns null (no error) or not (parsing error).

    Next

    1. Support another browsers : IE, Edge, Safari, ...

    Install

    npm i common-xml-features

    DownloadsWeekly Downloads

    6

    Version

    3.3.0

    License

    MIT

    Unpacked Size

    274 kB

    Total Files

    24

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar