我对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,我需要获取firstname
和lastname
值。
有很多例子,但我找不到如何通过名称获取节点值。
答案 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;
}