0.5.0 • Published 5 months ago

libxml2-wasm v0.5.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

libxml2-wasm

CI Build on master npm

Why Choose Another XML Library?

When comparing the previous two main approaches — pure JavaScript implementation and traditional C implementation binding — WebAssembly offers a unique combination of advantages. It provides excellent performance while maintaining the best compatibility with modern JavaScript runtimes.

Javascript ImplementationTraditional C BindingWebAssembly
Parsing SpeedAverage^1FastFast
C/C++ Toolchain at RuntimeNot requiredRequired^2Not Required
Prebuilt BinariesN/AOne for each OS / Runtime / ArchUniversal for all
Prebuilt Binary CompatibilityN/AMay be broken across libc versionsVery Good
Browser CompatibilityYesNoYes

Documentation

https://jameslan.github.io/libxml2-wasm/index.html

Supported Environments

Due to the usage of WebAssembly, ES module and top level await etc, this library requires the minimum version of the following environments,

EnvironmentVersion
Node.jsv16+
ChromeV89+
EdgeV89+
Safariv15+

Features

  • Parsing & Querying
  • Validating
  • Modifying
  • Serializing
  • XInclude and XSD include/import (experimental)

Getting started

Install libxml2-wasm package:

npm i libxml2-wasm

libxml2-wasm is an ES module, the import process differs between ES modules and CommonJS modules.

From ES Module

import fs from 'node:fs';
import { XmlDocument } from 'libxml2-wasm';
const doc1 = XmlDocument.fromString('<note><to>Tove</to></note>');
const doc2 = XmlDocument.fromBuffer(fs.readFileSync('doc.xml'));
doc1.dispose();
doc2.dispose();

From CommonJS

const fs = require('node:fs');
import('libxml2-wasm').then(({ XmlDocument }) => {
    const doc1 = XmlDocument.fromString('<note><to>Tove</to></note>');
    const doc2 = XmlDocument.fromBuffer(fs.readFileSync('doc.xml'));
    doc1.dispose();
    doc2.dispose();
});

IMPORTANT: dispose() is required to avoid memory leak.

For more detail, see the Doc.

^1: The performance of different XML libraries can vary significantly. For more information, refer to the benchmark provided. ^2: The requirement of a C/C++ toolchain at runtime can be waived if prebuilt binaries are available.

0.5.0

5 months ago

0.4.1

8 months ago

0.4.0

9 months ago

0.3.1

12 months ago

0.3.0

1 year ago

0.2.0

1 year ago

0.1.0

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago