7 void print_xml(void *, char *, unsigned int);
9 int main(int argc, char **argv)
13 printf("usage: printtree <filename>\n\n");
19 rid = xmlOpen(argv[1]);
20 if (xmlErrorGetNo(rid, 0) != XML_NO_ERROR)
22 printf("%s\n", xmlErrorGetString(rid, 1));
30 num = xmlNodeGetNum(xid, "*");
33 if (xmlNodeGetPos(rid, xid, "*", i) != 0)
36 print_xml(xid, (char *)&name, 0);
45 printf("Error while opening file for reading: '%s'\n", argv[1]);
50 void print_xml(void *id, char *name, unsigned int len)
52 void *xid = xmlMarkId(id);
55 num = xmlNodeGetNum(xid, "*");
59 s = xmlGetString(xid);
63 printf("%s = %s\n", name, s);
74 if (xmlNodeGetPos(id, xid, "*", i) != 0)
76 unsigned int res, i = 4096 - len;
77 res = xmlNodeCopyName(xid, (char *)&name[len], i);
80 unsigned int index = xmlAttributeGetInt(xid, "n");
83 unsigned int pos = len+res;
86 i = snprintf((char *)&name[pos], 4096-pos, "%i", index);
91 print_xml(xid, name, len+res);
93 else printf("error\n");