vslavik / xmlwrapp Goto Github PK
View Code? Open in Web Editor NEWLightweight C++ XML parsing library
License: BSD 3-Clause "New" or "Revised" License
Lightweight C++ XML parsing library
License: BSD 3-Clause "New" or "Revised" License
It would be nice to have the manual available online, e.g. at http://vslavik.github.io/xmlwrapp/
Ideal would be to update it automatically, of course, but even if this can't be done, it would still be useful to have it, it doesn't change that often so keeping it up to date manually shouldn't be a big problem.
Converted from SourceForge issue 2102276, submitted by vaclavslavik
Attached patch adds xml::node::get_namespace() for accessing XML node's namespace URL.
Without it, it's not possible to access namespace information using xmlwrapp, because there's no interface to use libxml2 directly and libxml2 is namespaces aware and so hides xmlns attributes.
Converted from SourceForge issue 2787838, submitted by mgrundberg
Add a function that allows the user to know which line in the xml document that had a parsing error
installing on OS X El Capitan 10.11.2
I have libxml2 and libxslt installed using homebrew and since the installations are keg-only (not symlinked), I hade to provide LDFLAGS and CPPFLAGS for ./configure to work properly. Here is the command that succeeded:
./configure LDFLAGS=-L/usr/local/opt/libxml2/lib CPPFLAGS=-I/usr/local/opt/libxml2/include
and then I ran make and the following error showed up:
Making all in include
make[1]: Nothing to be done for `all'.
Making all in src
CXX libxml/libxmlwrapp_la-ait_impl.lo
In file included from libxml/ait_impl.cxx:34:
libxml/ait_impl.h:42:10: fatal error: 'libxml/tree.h' file not found
#include <libxml/tree.h>
^
1 error generated.
make[1]: *** [libxml/libxmlwrapp_la-ait_impl.lo] Error 1
make: *** [all-recursive] Error 1
Please advise.
Converted from SourceForge issue 1748889, submitted by tiziano
The attached patch fixes the following unittests:
Plus it disables two xsl-subtests which fail due to changed behavior in libxslt.
Converted from SourceForge issue 2787840, submitted by mgrundberg
The line number is appended to the error message AND
If an error message is set by the user when parsing with the SAX parser, do not overwrite it with the general error message from libxml2
It looks like the released xmlwrapp-0.8.0.tar.gz does not contain the cpp11.h
file? Is this intentional? How am I supposed to build this?
Jeroens-MacBook-Pro:xmlwrapp-0.8.0 jeroen$ make
Making all in include
make[1]: Nothing to be done for `all'.
Making all in src
CXX libxml/libxmlwrapp_la-ait_impl.lo
CXX libxml/libxmlwrapp_la-attributes.lo
CXX libxml/libxmlwrapp_la-document.lo
libxml/document.cxx:42:10: fatal error: 'cpp11.h' file not found
#include "cpp11.h"
^
1 error generated.
make[1]: *** [libxml/libxmlwrapp_la-document.lo] Error 1
make: *** [all-recursive] Error 1
Ubuntu 12.04
checking for the Boost iostreams library... grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
grep: *+: No such file or directory
Converted from SourceForge issue 1748888, submitted by tiziano
The attached patch fixes a compilation/linking error on FreeBSD.
Converted from SourceForge issue 1927398, submitted by vadz
Currently the applications using (only) libxmlwrapp (and not libxsltwrapp) still have a dependency on libxslt because of the use of xsltSaveResultTo{Filename,String} functions in xml::document.
This patch introduces an intermediate class called xslt::result which allows to move these functions calls to libxsltwrapp, thus removing this unwanted dependency. It doesn't change neither the library public API nor its behaviour.
Converted from SourceForge issue 2787842, submitted by mgrundberg
Added functions to allow the user to set the namespace of a node and its prefix
Attributes iterators, in particular, return a reference to an internal attr object owned by the iterator. This means that the reference is only valid for the lifetime of the iterator and code like this is invalid:
xml::attributes::attr& a = *(root.get_attributes().begin());
// iterator freed, including its attr object, 'a' no longer valid
a.set_namespace(xml::namespaces::ns("href2", "p2"));
This is extremely unexpected for a C++ programmer.
$ git pull
$ ./bootstrap
./bootstrap: 49: Bad substitution
Running bkl
in dist-hook
target fails under 20.04 because python is now Python 3 and we need Python 2 for it.
Unfortunately using python2
doesn't work everywhere neither (e.g. it fails under Ubuntu 18.04). Other than porting bkl to Python 3 (which is not trivial), is there any way to run it under all systems? All I can think about is to define PYTHON2
env var and use it in the makefile, which is a bit ugly but probably ought to work.
Converted from SourceForge issue 2714356, submitted by ptomaine
It would be very useful if xmlwrapp supports XPath too. Thanks.
Hello,
How can I work with namespaces xmlwrapp ? I only have default namespace in my XML document and I need to use XPATH.
Thanks,
Jean-Marc
Converted from SourceForge issue 2787836, submitted by mgrundberg
The parse_stream function returned true when passed an invalid stream or a stream at eof
./configure --disable-tests gives warning
configure: WARNING: unrecognized options: --disable-tests
and make fails:
Making all in tests
CXX test_main.o
In file included from test_main.cxx:34:
./test.h:39:10: fatal error: 'boost/test/unit_test.hpp' file not found
^
1 error generated.
make[1]: *** [test_main.o] Error 1
make: *** [all-recursive] Error 1
Hello,
Is it possible to have more information about an exception?
When I catch an exception, I get the error message but not the number of the line at fault.
Thank you for your help.
Jean-Marc
_cbfo.h uses std::binary_function, which is removed in C++17.
Converted from SourceForge issue 1748887, submitted by tiziano
The attached patch fixes the following failure:
i686-pc-linux-gnu-g++ -O2 -ggdb -march=prescott -fomit-frame-pointer -fno-ident
-pipe -fpic -shared
-I/var/tmp/portage/dev-libs/xmlwrapp-0.5.0-r1/work/xmlwrapp-0.5.0/include
-I/usr/include -I/usr/include/libxml2 -I/usr/include/libxml2 -c node.cxx
i686-pc-linux-gnu-g++ -O2 -ggdb -march=prescott -fomit-frame-pointer -fno-ident
-pipe -fpic -shared -I/var/tmp/portage/dev-libs/xmlwrapp-0.5.0-r1/work/xmlwrapp-0.5.0/include
-I/usr/include -I/usr/include/libxml2 -I/usr/include/libxml2 -c node_iterator.cxx
node.cxx:515: error: 'std::ostream& xml::operator<<(std::ostream&, const xml::node&)' should have been declared inside 'xml'
make[2]: *** [node.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory
/var/tmp/portage/dev-libs/xmlwrapp-0.5.0-r1/work/xmlwrapp-0.5.0/src/libxml' make[1]: *** [all] Error 2 make[1]: Leaving directory
/var/tmp/portage/dev-libs/xmlwrapp-0.5.0-r1/work/xmlwrapp-0.5.0/src'
make: *** [all] Error 2
Release 0.7 fails to compile on Debian 6:
./configure --enable-static=no
...
make
Making all in include
make[1]: Entering directory /usr/local/src2/xmlwrapp-0.7.0/include' make[1]: Nothing to be done for
all'.
make[1]: Leaving directory /usr/local/src2/xmlwrapp-0.7.0/include' Making all in src make[1]: Entering directory
/usr/local/src2/xmlwrapp-0.7.0/src'
CXX libxmlwrapp_la-schema.lo
In file included from libxml/errors_impl.h:57,
from libxml/schema.cxx:38:
/usr/include/c++/4.4/cstdarg:56: error: '::va_list' has not been declared
In file included from /usr/include/libxml2/libxml/tree.h:17,
from /usr/include/libxml2/libxml/xmlschemas.h:19,
from libxml/schema.cxx:41:
/usr/include/libxml2/libxml/xmlstring.h:106: error: 'va_list' has not been declared
libxml/schema.cxx: In constructor 'xml::impl::schema_impl::schema_impl(xmlDoc_, xml::error_handler&)':
libxml/schema.cxx:64: error: 'bad_alloc' is not a member of 'xml::impl::std'
libxml/schema.cxx: In member function 'bool xml::schema::validate(const xml::document&, xml::error_handler&) const':
libxml/schema.cxx:130: error: 'bad_alloc' is not a member of 'xml::impl::std'
make[1]: *_* [libxmlwrapp_la-schema.lo] Error 1
make[1]: Leaving directory `/usr/local/src2/xmlwrapp-0.7.0/src'
make: *** [all-recursive] Error 1
Converted from SourceForge issue 2816324, submitted by bennison
I got build errors with 0.6.1 running on Ubuntu 9.04. One was from the Boost Test suite and one was due to the GCC 4.3 header dependency cleanup.
I updated the tests/test.h file to remove these errors.
I tried to install xmlwrapp-0.7.1 on Ubuntu 16.04 LTS since this is a dependency for xslt, a lightweight XSLT processing package for R. However, ./configure && make && make install
fails with the following error:
andreas@X230:~/Downloads/xmlwrapp-0.7.1$ ./configure && make && make install
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/home/andreas/Downloads/xmlwrapp-0.7.1/admin/missing: Unknown `--is-lightweight' option
Try `/home/andreas/Downloads/xmlwrapp-0.7.1/admin/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... (cached) yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking how to print strings... printf
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBXML... yes
checking for LIBXSLT... yes
checking for LIBEXSLT... yes
checking whether to enable assertions... yes
checking for Boost headers version >= 0.0.0... yes
checking for Boost's header version...
configure: error: invalid value: boost_major_version=
Specifying ./configure --with-boost=/usr/include
yields the same error.
AFAIK the dependencies for xmlwrapp-0.7.1 should be met:
andreas@X230:~$ autoconf --version
autoconf (GNU Autoconf) 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David J. MacKenzie and Akim Demaille.
andreas@X230:~$ automake --version
automake (GNU automake) 1.15
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Tom Tromey <[email protected]>
and Alexandre Duret-Lutz <[email protected]>.
andreas@X230:~$ xmllint --version
xmllint: using libxml version 20903
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib Lzma
andreas@X230:~$ xsltproc --version
Using libxml 20903, libxslt 10128 and libexslt 817
xsltproc was compiled against libxml 20902, libxslt 10128 and libexslt 817
libxslt 10128 was compiled against libxml 20902
libexslt 817 was compiled against libxml 20902
andreas@X230:~$ cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION"
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
#define BOOST_LIB_VERSION "1_58"
Thanks for your help.
Reading your LICENCE file i was not able to correlate it with any other existing licences.
Is this supposed to be an Apache licence? if yes could you please mention this.
Thanks.
Converted from SourceForge issue 3166630, submitted by tbrowder2
summary says it all--should be able to make it automatic
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.