本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0
          #include <libxml/parser.h>                                                           
          #include <libxml/xpath.h>                                                            
          #include <stdio.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*) "http://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);                                                                        
          }                                                                                

          demo.xml

           <?xml version="1.0" encoding="UTF-8"?>                 
          <story>                                                
            <storyinfo>                                          
              <author>John Fleck</author>                        
              <datewritten>June 2, 2002</datewritten>            
              <keyword>example keyword裴</keyword>                
            </storyinfo>                                         
            <body>                                               
              <headline>This is the headline</headline>          
              <para>This is the body text.</para>                
            </body>                                              
          </story>                                                
              
                                                                                               

          懇請幫單擊一下廣告
          posted on 2010-08-23 12:06 有貓相伴的日子 閱讀(4069) 評論(2)  編輯  收藏 所屬分類: c&c++

          評論:
          # re: libxml中使用xpath解析xml文件[未登錄] 2011-04-13 17:27 | a
          xmlChar *xpath = (xmlChar*) "//keyword"; 這里為什么要用"//"  回復  更多評論
            
          # re: libxml中使用xpath解析xml文件[未登錄] 2014-01-02 13:06 | 123
          @a
          你好好看一些啊xpath的語法  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 蓝山县| 桂东县| 包头市| 广灵县| 丹江口市| 石首市| 铜梁县| 无极县| 镇原县| 平舆县| 正定县| 沙坪坝区| 安多县| 澜沧| 嘉荫县| 来安县| 泾源县| 都匀市| 从江县| 岑溪市| 文昌市| 南漳县| 南澳县| 蚌埠市| 正镶白旗| 育儿| 崇信县| 南乐县| 深州市| 那坡县| 承德市| 湘阴县| 阿鲁科尔沁旗| 东辽县| 东城区| 麻江县| 承德市| 龙南县| 互助| 定州市| 宁河县|