Q: best way to parse Gnupg XML

Werner Koch wk at gnupg.org
Wed Jul 4 10:15:01 CEST 2001

 || On Tue, 3 Jul 2001 16:10:50 -0400 (EDT)
 || Bart Trojanowski <bart at jukie.net> wrote: 

 bt> Looks like a steep learning curve.  Is there a better way?

There is also an API to access some of the information more directly:

    algo_buf = g_strdup_printf ("%lu/%s", 
         gpgme_key_get_ulong_attr (key, GPGME_ATTR_LEN, NULL, 0 ),
         gpgme_key_get_string_attr (key, GPGME_ATTR_ALGO, NULL, 0 ) );
    text[COL_ALGO] = algo_buf;

    s = gpgme_key_get_string_attr (key, GPGME_ATTR_KEYID, NULL, 0 );
    if ( strlen (s) == 16 )
        s += 8; /* show only the short keyID */
    text[COL_KEYID] = s;

    s = gpgme_key_get_string_attr (key, GPGME_ATTR_NAME, NULL, 0 );
    text[COL_NAME] = s;

    s = gpgme_key_get_string_attr (key, GPGME_ATTR_EMAIL, NULL, 0 );
    text[COL_EMAIL] = s;

If you want to access the 2nd user ID or key, you have to increment
the last argument like this:

  for (i=0; (s=gpgme_key_get_string_attr (key, GPGME_ATTR_NAME, NULL, i); i++)
        do_something_with (s);

Which interates over all user IDs of the given key.  See gpgme/key.c
for infomration on what attributes you can access.

Werner Koch        Omnis enim res, quae dando non deficit, dum habetur
g10 Code GmbH      et non datur, nondum habetur, quomodo habenda est.
Privacy Solutions                                        -- Augustinus

More information about the Gnupg-devel mailing list