#include #include #include #define XML_FILE "test.xml" int main(void) { xmlTextReaderPtr reader; int ret; reader = xmlNewTextReaderFilename (XML_FILE); ret = xmlTextReaderRead (reader); while (ret == 1) { xmlChar *name; xmlReaderTypes type; name = xmlTextReaderName (reader); type = xmlTextReaderNodeType (reader); if (xmlStrEqual (name, "node") && type == XML_READER_TYPE_ELEMENT) { xmlNodePtr subtree, child; xmlBufferPtr buf; int count = 0; subtree = xmlTextReaderExpand (reader); for (child = subtree->children; child != 0; child = child->next, count++) ; buf = xmlBufferCreate (); xmlNodeDump (buf, subtree->doc, subtree, 0, 1); g_print ("%d children\n%s\n", count, buf->content); ret = xmlTextReaderNext (reader); } else { g_print ("tag %s type %d\n", name, type); ret = xmlTextReaderRead (reader); } xmlFree (name); } xmlFreeTextReader (reader); }