textwolf is a C++ template library for processing XML in various character set encodings. It has interfaces for iterating on unicode characters, XML elements and elements typed by xml path selection expression matches. It supports chunk-wise processing of input and has a peformance competitive among the fastest open source XML processors.
License: Mozilla Public License 2.0
Makefile 0.24%C++ 99.76%
textwolf's Introduction
Documentation
* textwolf is a header only library. For using it, copy the header files and include "include/textwolf.hpp".
* textwolf should be compiled with the highest optimization level, specially with deep inline expansion
* The textwolf home is at at http://textwolf.net
* A textwolf introduction can be found at http://textwolf.net/tutorial.html
* A doxygen interface documentation is at http://patrickfrey.github.com/textwolf/html/index.html
Bugreports
* textwolf bug reports are in the github issue management of the textwolf project
Project Schedule
* 2014/06/16
Version 0.2.0
* Support of IsoLatin codepages besides UTF/UCS encodings
* Chunk by chunk feeding reimplementation (using longjmp instead of exceptions)
textwolf calculates an estimation of how much memory it will use when processing XML input.
This mechanism leads to out of memory exceptions when the expressions get complex.
Rethink and reimplement !
The character set encoding has to be detected by the caller.
So BOM character sequences (Byte Order Mark U+FEFF in UTF-16)
should be ignored. Currently this is not the case.
The caller has to pass an XML without leading BOM characters down to textwolf.
Because the client has to detect the character set encoding anyway, skipping BOM
before passing th content to textwolf should be doable without big effort.
Entity definitions in the XML processed are ignored.
Entity definitions have to be passed to the parser as read only table.
If they are defined in this table they are parsed and substituted in the XML source.
Entity definitions as defined in XML are known as a source of possible DoS attacks.
textwolf allows only character entities and they have to be passed down from the caller.
I do not see any reason to change this.