Re: C++ XML Parser

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mike - EMAIL IGNORED writes:

On Wed, 03 Jan 2007 13:30:18 -0500, Dmitriy Kropivnitskiy wrote:

James Kosin wrote:
[...]

An XML parser is more or less a text parser.
Usually best to write your own.  It is very simple design and
straightforward.

Yikes! This is a very bad suggestion. The idea behind standards like XML is to have standard tools to work with them, thus eliminating repeating the same mistakes in every implementation. You don't go writing a new regular expression parser every time you need regexes do you? To answer the original email, there are a few XML parsers in common use out there. The main ones for UNIX are probably libxml and expat.


I agree with both of the quoted sentiments. I took a look at one of
the recommended parsers, and decided that it would take a while to
install it and figure out how to use it.  However, since:
   1) I already have a well tested general token parser;
   2) my present XML requirement is close to the most trivial
      possible;
I parsed it directly, with numerous application-specific tests
for validity.  In a couple of hours, it is tested and running.

However, for general application, the use of software conforming
standards is certainly preferable.  There seems to be a number of
choices.

How to choose?

Well, I don't know what you evaluated, but late last year I had to through together a C++ XML parser. I remember looking at libxml a long time ago, so this time around I looked at it again.

I found that the current version of libxml2 had a new parsing API that was laughably easy to use directly, or wrap into a C++ class. It was laughably easy for me to wrap it up into a class, and get a robust parser with full namespace support. I could refer to the individual nodes and attributes by uri/name pair directly, without dealing with the headaches of implementing and tracking namespaces.


Attachment: pgpsdxy1dHnq4.pgp
Description: PGP signature

[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [Fedora Magazine]     [Fedora News]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Maintainers]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [Fedora Fonts]     [ATA RAID]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [SSH]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Tux]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Asterisk PBX]     [Fedora Sparc]     [Fedora Universal Network Connector]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux