[webkit-dev] Wrapping XML parser API

Paul Pedriana ppedriana at gmail.com
Sat Sep 13 21:41:25 PDT 2008

An abstracted XML parser API would be useful to embedded and gaming 
platforms. Libxml is a fine library, but memory-constrained applications 
will usually have their own lean xml implementation and would like to 
avoid redundancy.

Regarding stream-based XML as opposed to SAX-based XML, we too find it 
to be a friendlier way. Our xml library is layered, with a stream 
implementation at the bottom, and optional SAX and DOM APIs on top of 
it. The SAX layer ends up being very thin, and I tend to think that if 
you have a stream API then it can usually or always be thinly wrapped to 
be a SAX API.


On Sep 10, 2008, at 4:08 AM, Arvid Nilsson wrote:

>/ Hello, sorry to bring this old topic up again. Nothing has happened  
/>/ in the last year or so, and this issue is bothering me again...
/>/ I am thinking that libxml2 should be somehow considered "default"  
/>/ since it is used by most existing ports, and also is quite portable,  
/>/ making it likely that new ports will use it. Maybe this idea will  
/>/ make it possible to make a patch that permits using something else  
/>/ than libxml2 without having to patch build systems other than qmake.
/>/ Would it be possible to use a variety on the ResourceHandle porting  
/>/ approach and have a WebCore/dom/XMLTokenizerBase.{h, cpp}. The  
/>/ libxml2 implementation lives in WebCore/dom/XMLTokenizer.{h, cpp}.  
/>/ If you don't specify in your build system that you should use  
/>/ WebCore/dom/port/XMLTokenizer.h and WebCore/dom/port/ 
/>/ XMLTokenizerPort.cpp, you will get libxml2.
/>/ An added bonus is that you don't have to come up with a better name  
/>/ than "XMLTokenizerLibXml2.cpp" since it's still called  
/>/ "XMLTokenizer.cpp".
I think we should wrap the XML parser API at the platform/ layer. The  
main risk in doing so would be performance.

  - Maciej

/>/ /Arvid
/>/ On Sun, Jul 29, 2007 at 7:53 PM, Lars Knoll <lars at trolltech.com <http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev>>  
/>/ wrote:
/>/ On Sunday 29 July 2007 08:47:50 Maciej Stachowiak wrote:
/>/ > On Jul 28, 2007, at 3:52 AM, Lars Knoll wrote:
/>/ > > On Saturday 28 July 2007 00:26:19 Maciej Stachowiak wrote:
/>/ > >> On Jul 27, 2007, at 11:36 AM, Lars Knoll wrote:
/>/ > >>
/>/ > >> Other organizations have requested the ability to use other XML
/>/ > >> parsers as well, such as expat. Seems like in the long run we  
/>/ want a
/>/ > >> different approach than just ifdefs in the XMLTokenizer.cpp  
/>/ file. It
/>/ > >> seems like the best would be some abstraction layer on top of the
/>/ > >> parser library, but if that is difficult then your option #2  
/>/ sounds
/>/ > >> like a docent long-run approach. I would have expected just about
/>/ > >> every XML parsing library to have a SAX-like API, which  
/>/ shouldn't be
/>/ > >> too hard to abstract, but perhaps QXml works differently.
/>/ > >
/>/ > > I guess that assumption doesn't hold. QXmlStream is a streaming
/>/ > > parser with an
/>/ > > API that is very different from SAX. It IMO a whole lot simpler to
/>/ > > use than a
/>/ > > SAX like API and is inspired from similar APIs in the Java  
/>/ world. If
/>/ > > you're
/>/ > > interested, have a look at
/>/ > > http://doc.trolltech.com/4.3/qxmlstreamreader.html
/>/ >
/>/ > I'm told libxml has a StreamReader-style API now as well, so if  
/>/ that's
/>/ > the better alternative, we could design the XML code around that  
/>/ style
/>/ > of API (though probably not right at the moment).
/>/ No, for the moment, I'd rather just go with the approach I've posted  
/>/ in bug
/>/ 14791. Once there are requests for more parser backends, we could  
/>/ rethink
/>/ this, but for now I think we have more urgent things to do.
/>/ Cheers,
/>/ Lars

More information about the webkit-dev mailing list