How to get field values and attribute values for a xml document using EXPAT?

Albrecht Schmidt Albrecht.Schmidt at
Sat Aug 14 17:21:08 BST 1999

>>>>> "Srinivasan" == Srinivasan KS <Srinivasan_KS at> writes:

    -- snip --

    Srinivasan> We are using EXPAT for doing this.Can any body tell
    Srinivasan> which APIs we have to call and the way it should be
    Srinivasan> called to achieve the result.

    -- snip --

You might want to try something like this.  It should be close to what
you want (it's a modified $(EXPATHOME)/sample/elments.c):

#include <stdio.h>
#include "xmlparse.h"

void startElement(void * user_data, const char * name, const char ** atts) {

  int i;
  if (atts)
    for (i = 0; atts [i]; i += 2)
      printf ("%s=\"%s\"\n", atts[i], atts[i+1]); 

void endElement(void * user_data, const char * name) {}

int only_whitespace (const XML_Char * s, int len) {
  /* return true if first len characters of s are whitespace;
     used for filtering out uninteresting tokens -- watch your encoding */

  int i;
  for (i = 0; i < len; i++) if (!isspace (s[i])) return 0;
  return 1;

void do_character_data (void * user_data, const XML_Char * s, int len) {

  if (!only_whitespace (s, len)) {
    int i;
    for (i = 0; i < len; i++) putchar (s[i]);
    printf ("\n");

int main()
  char buf[BUFSIZ];
  XML_Parser parser = XML_ParserCreate(NULL);
  int done;
  int depth = 0;
  XML_SetUserData(parser, &depth);
  XML_SetElementHandler(parser, startElement, endElement);
  XML_SetCharacterDataHandler(parser, do_character_data);

  do {
    size_t len = fread(buf, 1, sizeof(buf), stdin);
    done = len < sizeof(buf);
    if (!XML_Parse(parser, buf, len, done)) {
	      "%s at line %d\n",
      return 1;
  } while (!done);
  return 0;

compile with (under UNIX):

gcc -I../xmlparse -o e ../xmlparse/*.o ../xmltok/*.o e.c

execute with:

e < some_xml_file.xml



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

More information about the Xml-dev mailing list