2011-06-21 25 views
0

私はMinixmlを使ってC言語でxmlファイルを解析しています。私は値 "チェックタイム"、 "チェックキー"などをこの小さなから取得したいと思います。ファイル:MiniXML:C言語でxmlを解析する

<?xml version="1.0"?> 
<!--Test--> 
<myfile> 
    <command type="start"> 
     <instance>check-time</instance> 
     <instance>check-key</instance> 
     <instance>check-position</instance> 
     <action type="press button"> 
     <blue>1</blue> 
    </action> 
    </command> 

</myfile> 

ここに私のコードです。私はタグを使ってデータを抽出する方法を知らない。助けてください。なぜサブノード - >次に次のインスタンス値が表示されないのですか?

fp = fopen("trial.xml", "r"); 
     if(fp == NULL){ 
      perror("file missing"); 
     } 

     mxml_node_t *tree, *Asset_elem; 
     tree = mxmlLoadFile(NULL, fp,MXML_TEXT_CALLBACK); 

     fclose(fp); 

     Asset_elem = mxmlWalkNext(tree, tree, MXML_DESCEND_FIRST); 

     if(tree != NULL){ 
     mxml_node_t *node, *subnode, *subsubnode; 

      for (node = mxmlFindElement(Asset_elem, tree, 
             "command", 
             "type", "start", 
             MXML_DESCEND); 
       node != NULL; 
       node = mxmlFindElement(node, Asset_elem, 
         "command", 
         "type", "start", 
             MXML_DESCEND)) 
     { 

     printf("Inside for loop\n"); 
      printf("node name= %s\n", node->value.element.name); 

      if(node){ 
       subnode = mxmlFindElement(node, tree, "instance", NULL, NULL, MXML_DESCEND); 
       if(subnode != NULL){ 
        printf("subnode name= %s\n", subnode->value.element.name); 
        subsubnode = subnode->child; 
        printf("subsubnode name= %s\n", subsubnode->value.text.string); 
        subsubnode = subnode->next; 
        printf("subsubnode name= %s\n", subsubnode->value.text.string); 

       } 
      } 
     } 
+1

コードスニペットの実際の出力を確認するとよいでしょう。 – Clemens

答えて

1

ここではサブノードを使用していません。node->child->value.xxxを試してみてください。頑張って。