Parsing the file requires only the name of the file and a single function call, plus error checking. Full code: Appendix B
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if (doc == NULL ) { fprintf(stderr,"Document not parsed successfully. \n"); return; }
cur = xmlDocGetRootElement(doc);
if (cur == NULL) { fprintf(stderr,"empty document\n"); xmlFreeDoc(doc); return; }
if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { fprintf(stderr,"document of the wrong type, root node != story"); xmlFreeDoc(doc); return; }