X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=parse-xml.c;h=ad1b41833d2908b4b4714cdfc8bd8342a058b782;hb=b07cc00facf9d44f590fa9b2ef5b2b6ab9b08911;hp=85fbaf05feee574064ef5c8ccedcbc7d3297d98c;hpb=7674958d6669183799289f701e1148b6903b801a;p=pspp diff --git a/parse-xml.c b/parse-xml.c index 85fbaf05fe..ad1b41833d 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -67,7 +67,7 @@ print_attributes (xmlNode * a_node) { for (xmlNode *node = a_node; node; node = node->next) { - if (node->properties) + if (node->properties && node->parent->type != XML_DOCUMENT_NODE) { printf ("%s", node->name); for (xmlAttr *attr = node->properties; attr; attr = attr->next) @@ -79,6 +79,19 @@ print_attributes (xmlNode * a_node) } } +static void +print_attribute (xmlNode *node, const char *attr) +{ + for (; node; node = node->next) + { + const char *s = (char *) xmlGetProp (node, (xmlChar *) attr); + if (s) + puts (s); + + print_attribute (node->children, attr); + } +} + static void usage (void) { @@ -107,6 +120,8 @@ main (int argc, char **argv) print_containment (root); else if (!strcmp(argv[2], "attributes")) print_attributes (root); + else if (!strncmp(argv[2], "attr:", 5)) + print_attribute (root, argv[2] + 5); else if (!strcmp(argv[2], "labels")) print_labels (root); else