c/c++语言开发共享使用libxml的XML Parser

我刚开始使用libxml来解析xml。 我只需要知道根节点“beatles”是否存在,然后得到子节点“lastname”。 我的代码如下

#include  #include  #include  #include  #include  void parseStory ( xmlDocPtr doc, xmlNodePtr cur ) { xmlChar *key; cur = cur -> xmlChildrenNode; printf ( "Heren" ); while ( cur != NULL ) { if ( ( !xmlStrcmp ( cur -> name, ( const xmlChar * ) "lastname" ) ) ) { key = xmlNodeListGetString ( doc, cur -> xmlChildrenNode,1); printf ( "keyword: %sn", key ); xmlFree ( key ); } cur = cur -> next; } return ; } static void parseDoc ( char *docname ) { xmlDocPtr doc; xmlNodePtr cur; doc = xmlParseFile ( docname ); if ( doc == NULL ) { fprintf ( stderr, "Document not parsed successfully. n" ); return; } printf ( "Parsing Successfuln" ); cur = xmlDocGetRootElement ( doc ); if ( cur == NULL ) { fprintf ( stderr, "empty document n" ); xmlFreeDoc ( doc ); return; } printf ( "Got the root Noden" ); if ( xmlStrcmp ( cur->name, ( const xmlChar * ) "beatles" ) ) { fprintf ( stderr, "Document of the wrong type root node != "); xmlFreeDoc(doc); return; } printf ( "Got the root n" ); cur = cur -> xmlChildrenNode; while ( cur != NULL ) { if ( !(xmlStrcmp ( cur->name, ( const xmlChar * ) "name" ) ) ) { parseStory ( doc, cur ); } cur = cur -> next; } xmlFreeDoc ( doc ); return; } int main ( int argc, char **argv ) { char *docname; if ( argc <= 1 ) { printf ( "Usage: %s docnamen", argv[0] ); return ( 0 ); } docname = argv [1]; parseDoc ( docname ); return ( 1 ); } 

而xml文件是

     Paul McCartney   

我能够获得根节点“beatles”,但我无法找到“名称”和“姓氏”。 请帮我解决一下这个。

如果还有其他libxml函数可以使用,请告诉我。 谢谢。

    你需要在while循环中进行一些小改动。

     printf ( "Got the root n" ); cur = cur -> xmlChildrenNode; while ( cur != NULL ) { if (cur->type == XML_ELEMENT_NODE) { if ( !(xmlStrcmp ( cur->name, ( const xmlChar * ) "name" ) ) ) { parseStory ( doc, cur ); } cur = cur -> xmlChildrenNode; continue; } cur = cur -> next; } 

      以上就是c/c++开发分享使用libxml的XML Parser相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549887.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐