遍歷邏輯
int GetProperNode(xmlNodePtr xmlCur, char *cpNodeName, char *cpPropName, char *cpValue)
{
char *cpProp = NULL;
while (xmlCur != NULL)
{
if (xmlStrcmp(xmlCur->name, (const xmlChar *)cpNodeName) == 0)
{
cpProp = (char *)xmlGetProp(xmlCur, (const xmlChar *)cpPropName);
strcpy(cpValue, cpProp);
xmlFree(cpProp);
return 1;
}
if (xmlCur->children != NULL)
{
if (GetProperNode(xmlCur->children, cpNodeName, cpPropName, cpValue))
return 1;
}
xmlCur = xmlCur->next;
}
return 0;
}
說明
- 先取得根節點,再透過
children 與 next 遞迴遍歷所有節點。
- 使用
xmlGetProp 取得指定屬性值。
- 使用
xmlNodeGetContent 取得標籤內的文字內容。
- 記得釋動態記憶(
xmlFree)以避免記憶體洩漏。
