74 lines · 1.5 KB · C
RawDownload
<![CDATA[#include <libxml/parser.h>#include <libxml/xpath.h> xmlDocPtrgetdoc (char *docname) {	xmlDocPtr doc;	doc = xmlParseFile(docname);		if (doc == NULL ) {		fprintf(stderr,"Document not parsed successfully. \n");		return NULL;	} 	return doc;} xmlXPathObjectPtrgetnodeset (xmlDocPtr doc, xmlChar *xpath){		xmlXPathContextPtr context;	xmlXPathObjectPtr result; 	context = xmlXPathNewContext(doc);	if (context == NULL) {		printf("Error in xmlXPathNewContext\n");		return NULL;	}	result = xmlXPathEvalExpression(xpath, context);	xmlXPathFreeContext(context);	if (result == NULL) {		printf("Error in xmlXPathEvalExpression\n");		return NULL;	}	if(xmlXPathNodeSetIsEmpty(result->nodesetval)){		xmlXPathFreeObject(result);                printf("No result\n");		return NULL;	}	return result;}intmain(int argc, char **argv) { 	char *docname;	xmlDocPtr doc;	xmlChar *xpath = (xmlChar*) "//keyword";	xmlNodeSetPtr nodeset;	xmlXPathObjectPtr result;	int i;	xmlChar *keyword;			if (argc <= 1) {		printf("Usage: %s docname\n", argv[0]);		return(0);	} 	docname = argv[1];	doc = getdoc(docname);	result = getnodeset (doc, xpath);	if (result) {		nodeset = result->nodesetval;		for (i=0; i < nodeset->nodeNr; i++) {			keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1);		printf("keyword: %s\n", keyword);		xmlFree(keyword);		}		xmlXPathFreeObject (result);	}	xmlFreeDoc(doc);	xmlCleanupParser();	return (1);}]]>

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t