Awesome
libxmljs
npm install libxmljs
NodeJS bindings for libxml2 written in Typescript
Documentation
https://libxmljs.github.io/libxmljs/
Examples
For more examples, check out the test suite.
import libxmljs from "libxmljs";
libxmljs
.parseXmlAsync(
`
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child foo="bar">
<grandchild baz="fizbuzz">grandchild content</grandchild>
</child>
<sibling>with content!</sibling>
</root>
`
)
.then((xmlDoc) => {
const gchild = xmlDoc.find("//grandchild")[0];
console.log(gchild.text()); // prints "grandchild content"
const child = xmlDoc.root()?.child(0);
console.log(child?.getAttribute("foo")?.value()); // prints "bar"
});
Package Scripts
npm run init-submodules
Clones libxml2 source code to
vendor/libxml2
npm run configure
Generate new cmake config headers with cmake in vendor/libxml2.config. Used when updating to a new libxml2 version.
npm run build
Build the C++ source code using node-gyp
npm run swig
Generate a new
src/libxml2.cc
andswig.xml
file by processing the native code using SWIG. Used when making changes to native code or any of the SWIG interface files (src/*.i)
npm run tsgenerate
Generates typescript definitons for native bindings exports. Used when changes are made to native exports. Auto-generates
constants.ts
,functions.ts
,types.ts
, andvariables.ts
withinlib/bindings/
npm run tsc
Compiles Typescript within
lib/
and outputs it todist/
Usenpm run dev
to put Typescript compiler into watch mode.
npm run test
Runs all tests in
test/
using nodeunit. Usenpm run test -- -t TEST_NAME
to run a specific test.
npm run docs
Generates
docs/
using Typedoc