simple DOM-style XML parser, in C++?

Paul Miller stele at fxtech.com
Fri Dec 3 20:50:07 GMT 1999


I just "discovered" this list, and I wanted to check into the existence
of a simple parser that provides DOM-like access, before I implemented
my own (on top of expat). I've heard of SAX, and wonder if the C++
interface does anything like what I want to do.

I'm looking for a simple query interface that provides generic access to
elements and attributes, possibly with iterator-style access.

Here is an example XML file, and how I would like to go about parsing
it:

<Container name="foo" type="bar">
	<Foo name="element" length="42"/>
	<Object name="object1">
		<SubObject/>
	</Object>
	<Object name="object2">
		<SubObject/>
	</Object>
</Container>

// open file (somehow)
XML::File file(filename);
// search for a top-level element
XML::Element element = file.GetElement("Container");
// query attributes
XML::Attribute nameAttr = element.GetAttribute("name");
XML::Attribute typeAttr = element.GetAttribute("type");
// get attribute values
std::string name, type;
nameAttr >> name;
typeAttr >> type;

// look for specific sub-element
XML::Element fooElem = element.GetElement("Foo");
// read attributes directly
fooElem.GetAttribute("name") >> name;
int length;
fooElem.GetAttribute("length") >> length;

// loop over elements by iterator
XML::element_iterator it = element.begin("Object");
while (it != element.end())
{
	XML_Element &objElem = (*it);
	objElem.GetAttribute("name") >> name;
	// etc ...
}

I think something like this is pretty straightforward without all that
DOM complexity. I think this interface can be layered on top of expat.

Does the C++ SAX interface already do something like this? *should* I be
using DOM instead for something this simple?

--
Paul Miller - stele at fxtech.com

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list