本站不再更新,歡迎光臨 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 有貓相伴的日子 閱讀(4070) 評論(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的語法  回復  更多評論
            

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


          網站導航:
           
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 云浮市| 宁蒗| 永兴县| 福海县| 瓮安县| 上栗县| 七台河市| 丘北县| 邵东县| 舒兰市| 阳新县| 高陵县| 阿坝| 伊吾县| 白城市| 临朐县| 安乡县| 健康| 乌拉特中旗| 大同县| 米林县| 罗江县| 湖南省| 馆陶县| 泸水县| 桐柏县| 巨野县| 铅山县| 策勒县| 丰城市| 普兰县| 宣恩县| 蛟河市| 九寨沟县| 十堰市| 金川县| 保定市| 平顺县| 闽清县| 临沂市| 沂源县|