4 #include <libxml/parser.h>
5 #include <libxml/tree.h>
7 static const char *nodename(xmlNode *node, char *buf, int len)
9 /* Don't print out the node name if it is "text" */
10 if (!strcmp(node->name, "text")) {
12 if (!node || !node->name)
21 const char *name = node->name;
24 unsigned char c = name[i];
30 if (!node || !node->name)
40 static void show_one_node(xmlNode *node)
43 const unsigned char *content;
47 content = node->content;
51 /* Trim whitespace at beginning */
52 while (isspace(*content))
55 /* Trim whitespace at end */
56 len = strlen(content);
57 while (len && isspace(content[len-1]))
63 name = nodename(node, buffer, sizeof(buffer));
65 printf("%s: %.*s\n", name, len, content);
68 static void show(xmlNode *node)
72 for (n = node; n; n = n->next) {
78 static void parse(const char *filename)
82 doc = xmlReadFile(filename, NULL, 0);
84 fprintf(stderr, "Failed to parse '%s'.\n", filename);
88 show(xmlDocGetRootElement(doc));
93 int main(int argc, char **argv)
99 for (i = 1; i < argc; i++)