UNPKG

libxmljs

Version:

libxml bindings for v8 javascript engine

81 lines (51 loc) 2.32 kB
# libxmljs [![npm version](https://badge.fury.io/js/libxmljs.svg)](https://badge.fury.io/js/libxmljs) [![Test & Upload](https://github.com/libxmljs/libxmljs/actions/workflows/test-deploy.yml/badge.svg)](https://github.com/libxmljs/libxmljs/actions/workflows/test-deploy.yml) `npm install libxmljs` NodeJS bindings for [libxml2](https://en.wikipedia.org/wiki/Libxml2) written in [Typescript](https://www.typescriptlang.org/) ## Documentation [https://libxmljs.github.io/libxmljs/](https://libxmljs.github.io/libxmljs/) ## Examples For more examples, check out the [test suite](https://github.com/libxmljs/libxmljs/tree/master/test). ```javascript 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` and `swig.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`, and `variables.ts` within `lib/bindings/` `npm run tsc` > Compiles Typescript within `lib/` and outputs it to `dist/` Use `npm run dev` to put Typescript compiler into watch > mode. `npm run test` > Runs all tests in `test/` using nodeunit. Use `npm run test -- -t TEST_NAME` to run a specific test. `npm run docs` > Generates `docs/` using Typedoc