Uses new Rust 2021
|0.3.1||Mar 26, 2022|
|0.3.0||May 27, 2021|
|0.2.16||Feb 1, 2021|
|0.0.3||Feb 24, 2016|
#45 in Parser implementations
8,598 downloads per month
Used in 81 crates (11 directly)
Rust wrapper for libxml2.
The main goal of this project is to benefit from libxml2's maturity and stability while the native Rust XML crates mature to be near-drop-in replacements.
As of the
0.2.0 release of the crate, there are some modest safety guarantees:
- Mutability, as well as ownership - we use
Rc<RefCell<T>>wrappers to ensure runtime safety of libxml2 operations already in the Rust layer.
- Memory safety guarantees - in particular
Documentobjects have automatic bookkeeping and deallocation on drop, for leak-free wrapper use.
- No thread safety - libxml2's global memory management is a challenge to adapt in a thread-safe way with minimal intervention
Coverage: Only covers a subset of libxml2 at the moment, contributions are welcome. We try to increase support with each release.
Welcome! With these caveats, the contributors to the project are migrating production work towards Rust and find a continuing reliance on libxml2 a helpful relief for initial ports. As such, contributions to this crate are welcome, if your workflow is not yet fully supported.
Before performing the usual cargo build/install steps, you need to have the relevant components for using the original libxml2 code. These may become gradually outdated with time - please do let us know by opening a new issue/PR whenever that's the case.
On linux systems you'd need the development headers of libxml2 (e.g.
libxml2-dev in Debian), as well as
$ brew install libxml2 # e.g. version 2.9.12 $ ln -s /usr/local/Cellar/libxml2/2.9.12/lib/libxml2.2.dylib /usr/local/lib/libxml-2.0.dylib $ export LIBXML2=/usr/local/Cellar/libxml2/2.9.12/lib/pkgconfig/libxml-2.0.pc
- manually install builds tools c++ and english language by visiting BuildTools
- launch cmd prompt with admin privileges and execute these commands sequentially:
C:\> git clone https://github.com/microsoft/vcpkg C:\> .\vcpkg\bootstrap-vcpkg.bat C:\> setx /M PATH "%PATH%;c:\vcpkg" && setx VCPKGRS_DYNAMIC "1" /M C:\> refreshenv C:\> vcpkg install libxml2:x64-windows C:\> vcpkg integrate install