0

Minixml を使用して C で xml ファイルを解析しています。この小さな例から「check-time」、「check-key」などの値を取得したい。ファイル:

<?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>

これが私のコードです。タグを使用してデータを抽出する方法がわかりません。助けてください。subnode->next が次のインスタンス値を表示しないのはなぜですか?

   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);

                }
             }
        }
4

1 に答える 1

1

これでサブノードは使用されなくなりました。使用を試すことができますnode->child->value.xxx。頑張って。

于 2011-09-26T10:52:51.743 に答える