-<![CDATA[\r
-#include <libxml/parser.h>\r
-#include <libxml/xpath.h>\r
-\r
-xmlDocPtr\r
-getdoc (char *docname) {\r
- xmlDocPtr doc;\r
- doc = xmlParseFile(docname);\r
- \r
- if (doc == NULL ) {\r
- fprintf(stderr,"Document not parsed successfully. \n");\r
- return NULL;\r
- }\r
-\r
- return doc;\r
-}\r
-\r
-xmlXPathObjectPtr\r
-getnodeset (xmlDocPtr doc, xmlChar *xpath){\r
- \r
- xmlXPathContextPtr context;\r
- xmlXPathObjectPtr result;\r
-\r
- context = xmlXPathNewContext(doc);\r
- if (context == NULL) {\r
- printf("Error in xmlXPathNewContext\n");\r
- return NULL;\r
- }\r
- result = xmlXPathEvalExpression(xpath, context);\r
- xmlXPathFreeContext(context);\r
- if (result == NULL) {\r
- printf("Error in xmlXPathEvalExpression\n");\r
- return NULL;\r
- }\r
- if(xmlXPathNodeSetIsEmpty(result->nodesetval)){\r
- xmlXPathFreeObject(result);\r
- printf("No result\n");\r
- return NULL;\r
- }\r
- return result;\r
-}\r
-int\r
-main(int argc, char **argv) {\r
-\r
- char *docname;\r
- xmlDocPtr doc;\r
- xmlChar *xpath = (xmlChar*) "//keyword";\r
- xmlNodeSetPtr nodeset;\r
- xmlXPathObjectPtr result;\r
- int i;\r
- xmlChar *keyword;\r
- \r
- if (argc <= 1) {\r
- printf("Usage: %s docname\n", argv[0]);\r
- return(0);\r
- }\r
-\r
- docname = argv[1];\r
- doc = getdoc(docname);\r
- result = getnodeset (doc, xpath);\r
- if (result) {\r
- nodeset = result->nodesetval;\r
- for (i=0; i < nodeset->nodeNr; i++) {\r
- keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1);\r
- printf("keyword: %s\n", keyword);\r
- xmlFree(keyword);\r
- }\r
- xmlXPathFreeObject (result);\r
- }\r
- xmlFreeDoc(doc);\r
- xmlCleanupParser();\r
- return (1);\r
-}\r
+<![CDATA[
+#include <libxml/parser.h>
+#include <libxml/xpath.h>
+
+xmlDocPtr
+getdoc (char *docname) {
+ xmlDocPtr doc;
+ doc = xmlParseFile(docname);
+
+ if (doc == NULL ) {
+ fprintf(stderr,"Document not parsed successfully. \n");
+ return NULL;
+ }
+
+ return doc;
+}
+
+xmlXPathObjectPtr
+getnodeset (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;
+}
+int
+main(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);
+}
]]>
\ No newline at end of file