|
Boost : |
From: Stuart Dootson (stuart.dootson_at_[hidden])
Date: 2007-07-13 15:18:00
On 06/07/07, Stefan Seefeld <seefeld_at_[hidden]> wrote:
> Hello,
>
> over the last couple of years we have discussed possible XML APIs
> for inclusion into boost. As I already had an early prototype for
> such an API, I kept evolving it, based on feedback from those
> discussions.
> A couple of weeks ago I actually checked it into the sandbox
> (http://svn.boost.org/trac/boost/browser/sandbox/xml). Today,
> I adjusted the source layout to conform to the sandbox layout
> we agreed on, including a boost.build - based build-system.
>
> I would appreciate if anybody interested into a future boost.xml
> submission would have a look, provide feedback, or even get
> involved into the (ongoing) development.
>
> Best regards,
> Stefan
>
> PS: The current scope of the project is described in
> http://svn.boost.org/trac/boost/browser/sandbox/xml/README
Stefan - I've spent a few hours today porting a small (500 line) C#
application to C++ using your libxml2 wrapper code. Overall, for what
I've done, I liked it - there did seem to be some bugs (but that could
be due to deficiencies in VC8), and I could see some opportunities for
some conveniences. However, it enabled me to translate my 500 lines of
C# to 500 lines of C++, produce the same results and gain a 6x
performance increase in the process (woot!).
What was I doing - well, mainly iterating through nodes and evaluating
attribute values. For these functions, it would be nice to have some
form of filtering/transforming iterator layered on top of an elements
children_iterator that allows you to specify some subset of the
children that you want to see. I wrote a modified for_each that
performed an equivalent function (yes, I should have used Boosts
iterator adaptors). Also, it would be nice to have a typed attribute
value retrieval function. I knocked something up using lexical_cast
that did that - it'd be nice if it was in the library.
I also performed some XML tree construction - it was a pretty flat
structure, and I found the provided functions adequate for that.
As for the 'bugs' - well, I had to modify your code in places to get
my code to build (the code is at work, so it'll be Monday before I can
get at it again and post diffs if you're interested). I also had
issues compiling the dom.cpp file with VC7.1 and VC8 - to get VC8 to
build it, I had to move the factory and ptr_factory functions out of
the details namespace - VC8 just wouldn't admit to seeing those
functions otherwise.
Stuart Dootson
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk