C 使用libxml2获取内容

C 使用libxml2获取内容,c,xml,xml-parsing,libxml2,C,Xml,Xml Parsing,Libxml2,我试图使用libxml2的函数xmlNodeGetContent来访问xml文件中的内容,但由于某些原因,无法读取自动关闭选项卡中的内容 void parseRow (xmlDocPtr doc, xmlNodePtr cur) { xmlChar *key; cur = cur-> xmlChildrenNode; while (cur != NULL) { if ((!xmlStrcmp(cur->name, (const xmlChar

我试图使用libxml2的函数xmlNodeGetContent来访问xml文件中的内容,但由于某些原因,无法读取自动关闭选项卡中的内容

void parseRow (xmlDocPtr doc, xmlNodePtr cur) {

    xmlChar *key;
    cur = cur-> xmlChildrenNode;
    while (cur != NULL) {
        if ((!xmlStrcmp(cur->name, (const xmlChar *)"row"))) {
            key = xmlNodeGetContent( cur->children );
            printf("keyword: %s\n", (char*)key);
            xmlFree(key);
        }
        cur = cur -> next;
    }
    return;
}
我将这个示例xml文件与两种类型的选项卡一起使用,第一行选项卡可以读取,而第二行选项卡返回(null)


约翰·弗莱克
二○○二年六月二日
Id=“1”UserId=“1”
Id=“你好”

第二行元素为空,它没有内容,只有属性

<tag>non-empty content</tag>
<tag content="attribute value"/>
非空内容

如果没有任何模式,框架就不可能知道第二个标记元素是什么类型,也无法为其定义默认值,也无法派生类型,因此它没有内容。然而,它确实有一个内容属性,但是在我所知道的大多数框架中,您使用不同的方法访问属性

如果您想获取属性值,请使用xmlGetProp。

我认为您的意思是“tag”而不是“tab”和“empty”而不是“self-closing”。实际上,你指的是元素。
<tag>non-empty content</tag>
<tag content="attribute value"/>