获得标记名称,但使用miniXML解析时没有值

时间:2014-03-18 09:50:34

标签: c++ xml xml-parsing

为什么这段代码只会标记标签,而不是值?

int fromString(char* str)
{
    mxml_node_t *root, *node;   
    root  = mxmlLoadString(NULL,str, MXML_TEXT_CALLBACK);
    node = root;
    const char *textValue;
    char  bbb [256];
    const char *name;
    int aaa;
    mxmlGetElement(node);

    if (!strcmp(mxmlGetElement(node),"Root" ))
        {
        node = mxmlGetFirstChild(node);

        while (name= mxmlGetElement(node))
            {
            if (!strcmp(name,"AAA" ))
                {
                    cout<<"getting AAA"<<endl; 
                    aaa= mxmlGetInteger(node);
                    cout<<aaa<<std::endl;
                } else
            if (!strcmp(name,"BBB" ))
                {
                    cout<<"getting BBB"<<endl;
                    textValue=mxmlGetText(node,0);
                    if (textValue!=NULL) 
                        {
                        strcpy(bbb,textValue);
                        cout<<textValue<<std::endl;
                        }
                }
            node = mxmlGetNextSibling(node);
            }
        return 0;
        } else return -1;
}


int _tmain(int argc, _TCHAR* argv[])
{
    fromString("<Root><AAA>12</AAA><BBB>txt</BBB></Root>");

    int i ;

    cin>>i;
}

输出:

getting AAA
0
getting BBB

1 个答案:

答案 0 :(得分:0)

在您显示的XML代码段中:

<Root>
 <AAA>12</AAA>
 <BBB>txt</BBB>
</Root>

我非常确定12是一个单独的整数节点,它是AAA节点的子节点。因此,您必须遍历该节点的子节点,以查找包含的整数。

请参阅文档中的initial node structure example