Sun Java System Portal Server 7 Developer's Guide

An Introductory Example

You will find several examples of the use of the SOIF API in PortalServer-base/sdk/rdm/examples directory.

This section discusses an example that is similar to (but not necessarily identical to) example1.c. It shows how to iterate through a SOIF stream and print the URL and number of attributes of each SOIF in the stream.

This example assumes that you have already created a file containing a SOIF stream which is available on stdin. For example, you could have created a SOIF stream containing one or more RDs from the search engine database, which you would do by using the routines in RDM.h.

This example uses SOIF_ParseInitFile() to create a SOIF stream from the standard input.


Example 20–1 Simple SOIF Stream Parsing Example


/* Example 1 - Simple SOIF Stream Parsing */

#include <stdio.h>
#include <stdlib.h>
#include “soif.h”

int main(int argc, char *argv[])

{
/* Define a SOIFStream and SOIF */
SOIFStream *ss;
SOIF *s;
char *titleptr;

/* Open a SOIF stream that gets its SOIF from stdin */
ss = SOIF_ParseInitFile(stdin);
/* SOIFStream_IsEOS() checks if this is the end of the stream */

while (!SOIFStream_IsEOS(ss)) {
  if (!(s = SOIFStream_Parse(ss)))
  /* Exit the loop if the SOIF is invalid */
  break;

/* Print the URL for each SOIF (will be “-” if there is no URL)*/
printf(“URL = %s\\n”, s->url);

/* Print the title if it exists. */
 titleptr = SOIF_Findval(s, “title”);
 printf(“Title = %s\\n”, titleptr ? titleptr : “(none)”)

/* Print the number of attributes in the SOIF*/
 printf(“# of Attributes = %d\\n”, SOIF_GetAttributeCount(s));

 /* release the memory used by the SOIF */
 SOIF_Free(s);
 }
 /* Close the SOIFStream and exit */
 SOIFStream_Finish(ss);
 exit(0);
}