X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=parse-xml.c;h=9cf6694f91a008f64fef9f1a1dcb37192da289fb;hb=1713de7bb9768a933a7974a3713586a63f53d638;hp=2f6b33813eb43bc4aa050d3bee9fd415ff32ccf5;hpb=00357578f9bdbe00e5237bdb82dc80ec2214cbef;p=pspp diff --git a/parse-xml.c b/parse-xml.c index 2f6b33813e..9cf6694f91 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -159,6 +159,24 @@ print_attribute (xmlNode *node, const char *attr) } } +static void +print_element (xmlDoc *doc, xmlNode *node, const char *element) +{ + for (; node; node = node->next) + { + if (node->name && !strcmp(element, (char *) node->name)) + { + xmlBuffer *buf = xmlBufferCreate(); + xmlNodeDump (buf, doc, node, 0, 1); + xmlBufferDump (stdout, buf); + xmlBufferFree (buf); + putchar ('\n'); + } + + print_element (doc, node->children, element); + } +} + static __attribute__((unused)) xmlNode * find_page_setup (xmlNode *node) { @@ -237,6 +255,8 @@ main (int argc, char **argv) print_cdata (root); else if (!strcmp(argv[2], "text")) print_text (root); + else if (!strncmp(argv[2], "element:", 8)) + print_element (doc, root, argv[2] + 8); else if (!strncmp(argv[2], "attr:", 5)) print_attribute (root, argv[2] + 5); else if (!strcmp(argv[2], "labels"))