On Wed, Dec 19, 2012 at 5:18 AM, Gustavo Sverzut Barbieri <
barbi...@profusion.mobi> wrote:

> On Wednesday, December 19, 2012, thomasg wrote:
>
> > On Wed, Dec 19, 2012 at 4:38 AM, Gustavo Sverzut Barbieri <
> > barbi...@profusion.mobi <javascript:;>> wrote:
> >
> > > Hi Thomas,
> > >
> > > The standard way is pretty fast and lean, but it is a SAX-like parser.
> > That
> > > mean you only get tokens, for the tags you need to call yet another
> > > function to split the tag and arguments.
> > >
> > > It is good enough to parse svg, as done by Esvg. Should be also enough
> to
> > > parse config files and your chat.xml
> > >
> > > There is also a version trust creates nodes from XML. It's useful to
> > debug
> > > and for simple cases without performance worries. As very likely you
> will
> > > store your parsed data in a custom structure than a generic "Dom", I
> > > recommend using the sax version.
> > >
> > > I didn't try the example with your XML, but seems to be okay. The
> example
> > > could use eina_strbuf instead of array of strings, but that's marginal.
> > > Also could use the size and avoid strncmp(), but also marginal for an
> > > example.
> > >
> > > What is exactly failing?
> > >
> >
> > As you can see, the tags are totally wrong.
> > They are neither corretly aligned (a <foo> can be closed with </bar> and
> > not just </foo>), nor do the items correspond with the tags.
> > So if the input is not 100% like the parser expects it, say there's an
> > additional level, the parser won't fail but just receive totally wrong
> > data.
> > If I want to make sure that I get the date from tag <baz>DATA</baz>, I
> have
> > to manually compare the string and it seems that I might as well just
> parse
> > it myself alltogether.
>
>
> That is always the case with sax. It allows you to handle errors yourself,
> like abort, auto fix, etc. like parsing bogus HTML that is common in the
> Internet.
>
> I don't recall how strict I was with the tree/node version, I guess to make
> it usable by Evas textblock u can close tags with </>, but not sure if you
> specify an incorrect close tag what it would do. Anyway I'd recommend a
> final version to avoid the intermediate node tree and use sax directly,
> then you get more eficient data structures.
>
> Also consider always using the size. The original buffer is not modified,
> then strings will not be null terminated.
>
> Usually the sax parser will keep a stack, and you can validate based in
> that. But just validate if data is untrusted. Same for attributes, you just
> pay the price if you expect them for such tag. IOW it can be very
> efficient.
>
> The added benefit of using it over manual parse is that it will handle
> whitespaces and also do minimal tag boundary match. If > is missing, etc.
> that will emit errors.
>
>
Hm, I guess I had/have some misconceptions on how a SAX parser was supposed
to work.
It just seemed like a terrible idea to just take the data as it comes while
ignoring half of it.
Then again, to me XML seems like a terrible idea in general :)

Thanks for clearing it up.


>
> >
> >
> > >
> > > On Wednesday, December 19, 2012, thomasg wrote:
> > >
> > > > Hi everyone,
> > > >
> > > > I was just looking at Eina Simple XML which, at first sight seemed a
> > nice
> > > > tiny XML library.
> > > > However after looking closer, it seems that it is only useful to
> create
> > > > basic XML files, but NOT to read/parse them.
> > > >
> > > > I used the eina_simple_xml_parse function and realized, that this
> > > basically
> > > > is it, every single step of parsing has to be done manually and it
> > > > basically makes no difference if eina_simple_xml is used or not at
> all.
> > > > I then took a look at the example parser in
> eina_simple_xml_parser_01.c
> > > and
> > > > realized that, for the same reason, this is a extremely poor parser,
> > > > basically worthless (no offense intended).
> > > > Actually it is so poor, it is not even a simple XML parser because
> all
> > it
> > > > does is check if the input looks somewhat similar to XML.
> > > >
> > > > I realize, that this is not meant to be a full featured parser or
> even
> > a
> > > > basic parser, but seeing as it is hardly a parser at all, I can't see
> > the
> > > > point of having it (as an example).
> > > >
> > > > On the other hand, simple xml does have the concept of nodes using
> eina
> > > > inlists and such, but they seem to be usable only for creating xml,
> not
> > > > reading it.
> > > >
> > > > So my question is: Am I missing something here?
> > > >
> > > > Here's a modified/broken chat.xml file to be parsed by the example
> code
> > > to
> > > > show how poorly it does: http://bpaste.net/show/65296/
> > > > If there's no better way to do it, I'd suggest to make this explicit
> in
> > > the
> > > > docs/examples and/or remove the example.
> > > >
> > > > Regards
> > > >
> > > > --
> > > > thomasg
> > >
> >
> >
> ------------------------------------------------------------------------------
> > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
> > Remotely access PCs and mobile devices and provide instant support
> > Improve your efficiency, and focus on delivering more value-add services
> > Discover what IT Professionals Know. Rescue delivers
> > http://p.sf.net/sfu/logmein_12329d2d
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net <javascript:;>
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
>
>
> --
> Gustavo Sverzut Barbieri
> http://profusion.mobi embedded systems
> --------------------------------------
> MSN: barbi...@gmail.com
> Skype: gsbarbieri
> Mobile: +55 (19) 9225-2202
>
> ------------------------------------------------------------------------------
> LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
> Remotely access PCs and mobile devices and provide instant support
> Improve your efficiency, and focus on delivering more value-add services
> Discover what IT Professionals Know. Rescue delivers
> http://p.sf.net/sfu/logmein_12329d2d
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to