https://github.com/8ightfold/exicpp
C++ wrapper for the Efficient XML Interchange (EXI) processor
https://github.com/8ightfold/exicpp
cpp cpp17 exi xml
Last synced: about 1 year ago
JSON representation
C++ wrapper for the Efficient XML Interchange (EXI) processor
- Host: GitHub
- URL: https://github.com/8ightfold/exicpp
- Owner: 8ightfold
- License: apache-2.0
- Created: 2024-09-20T20:46:44.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-21T22:28:37.000Z (over 1 year ago)
- Last Synced: 2025-03-21T23:27:29.553Z (over 1 year ago)
- Topics: cpp, cpp17, exi, xml
- Language: C++
- Homepage:
- Size: 6.12 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# exiCPP
C++ wrapper for the Efficient XML Interchange Processor (EXIP).
## Background
While doing research for my website, I fell down the rabbithole
of data encoding formats. I then stumbled across the EXI format,
but discovered it didn't really have any C++ libraries for it.
So... I made my own.
## Current Work
**I've decided to completely rewrite exip in C++.**
There were major issues with the library,
but the tipping point was its complete inability to handle other libs outputs.
It was also obviously not written to be used for real XML inputs.
There are a mountain of bugs and inefficiencies that I've been taping over,
and a lack of support for essential options (like compression).
And while I *could* go through the whole codebase and fix all these issues,
I wanted to write a safer and more efficient version from the start.
You can find the new TODO list [here](TODO.md).
## Improvements
With some changes to exip's lookup and allocation methods, as well as the new HashTable,
large files can be encoded up to ***14400 times faster*** than the standalone library.
You can read about my changes [here](old/doc/Changes.md#performance).
## Todo (Old)
In order:
- Exificent compatible compression
- Schema support
- Finish wrapping the serializer
- Add full options support in driver
- DTD/PI support
- Improve error generality
- Generic character encoding?
- JSON support?