使用libxml2解析xml并使用C获取命名字符串值

时间:2014-08-26 02:44:37

标签: c xml libxml2

我对XML的东西很新,所以我不得不寻求帮助。 我有一个像这样的xml文件:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<main>
<string name="firstname">John2</string>
<string name="secondname">Doe</string>
<string name="Street">4th</string>
<string name="City">NY</string>
</main>

我有libxml2,我需要获取firstnamelastname值。 有很多例子,但我找不到如何通过名称获取节点值。

2 个答案:

答案 0 :(得分:0)

您可以使用

void getReference (xmlDocPtr doc, xmlNodePtr cur) {

    xmlChar *uri;
    cur = cur->xmlChildrenNode;
    while (cur != NULL) {
        if ((!xmlStrcmp(cur->name, (const xmlChar *)"reference"))) {
           1 uri = xmlGetProp(cur, "uri");
            printf("uri: %s\n", uri);
            xmlFree(uri);
        }
        cur = cur->next;
    }
    return;
}

其中cur将是您的节点“main”,而子属性将来自使用xmlGetProp函数

答案 1 :(得分:0)

我不知道是谁贬低了我的问题以及为什么,但我自己找到了答案。

while (cur != NULL) {
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"string"))) {
        uri = xmlGetProp(cur, "name");
        if ( ( !xmlStrcmp ( uri, ( const xmlChar * ) "firstname" ) ) ){
            key = xmlNodeListGetString ( doc, cur -> xmlChildrenNode,1);
            printf("string: %s\n", uri);
            printf ( "firstname: %s\n", key);
        }
       .... so on with the lastname
    }
    cur = cur->next;
}