本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          隨筆-230  評(píng)論-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>                                                
              
                                                                                               

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

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

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 白山市| 扶绥县| 绿春县| 涡阳县| 敖汉旗| 卫辉市| 偏关县| 临武县| 泊头市| 延吉市| 湖口县| 盐城市| 云安县| 洛隆县| 嘉义县| 汽车| 顺义区| 盐池县| 雷山县| 彩票| 保亭| 兴仁县| 驻马店市| 南岸区| 洛宁县| 松原市| 开江县| 万安县| 鄂伦春自治旗| 白朗县| 余江县| 视频| 鄱阳县| 武山县| 大连市| 南陵县| 新乐市| 肥东县| 鹤庆县| 托克逊县| 利津县|