简体   繁体   English

MiniXML:使用C解析xml

[英]MiniXML: parsing xml in C

I am parsing an xml file in C using Minixml. 我正在使用Minixml在C中解析一个xml文件。 I want to get the values "check-time", "check-key" etc from this small eg. 我想从这个小例子中获取值“ check-time”,“ check-key”等。 file: 文件:

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

Here is my code. 这是我的代码。 I dont know how to extract the data withing the tag. 我不知道如何使用标签提取数据。 Please help. 请帮忙。 Why is subnode->next not showing the next instance value? 为什么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);

                }
             }
        }

Now it has don't use subnode, you can try use node->child->value.xxx . 现在它没有使用子node->child->value.xxx ,您可以尝试使用node->child->value.xxx Good luck to you. 祝你好运。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM