xmlDocPtr doc = xmlParseMemory(result, rlen);
- if (!doc) {
- fprintf(stderr, "xmLParseMemory failed\n");
- continue;
- }
-
- // xmlDocPtr doc_copy = xmlCopyDoc( doc, 1 );
- //char* holdings_expr = "/*/*[(local-name()='datafield' and "
- // "(@tag!='035' and @tag!='999')) or local-name()!='datafield']";
-
- //char* marc_expr = "//*[@tag=\"999\"]";
+ if (doc) {
+ prune_doc( doc, prune );
+ char* marc = _xml_to_string(doc);
+ fprintf(stdout, "%s", marc);
- prune_doc( doc, prune );
- //prune_doc( doc_copy, holdings_expr );
+ free(marc);
+ xmlFreeDoc(doc);
- char* marc = _xml_to_string(doc);
- //char* holdings = _xml_to_string(doc_copy);
+ } else {
- fprintf(stdout, "%s", marc);
- //fprintf(stderr, "%s", holdings);
-
- free(marc);
- //free(holdings);
- xmlFreeDoc(doc);
- //xmlFreeDoc(doc_copy);
+ fprintf(stderr, "xmLParseMemory failed for record %d\n", counter);
+ }
}
xmlNodePtr cur_node = (xmlNodePtr) object->nodesetval->nodeTab[i];
xmlUnlinkNode( cur_node );
xmlFreeNode( cur_node );
+ object->nodesetval->nodeTab[i] = NULL;
}
+ xmlXPathFreeObject(object);
+ xmlXPathFreeContext(xpathctx);
+
/* remove all comments and PI nodes */
xmlNodePtr cur = doc->children;
while(cur) {
cur = cur->next;
}
- xmlXPathFreeObject(object);
- xmlXPathFreeContext(xpathctx);
}