парсинг для значений XML - PullRequest
       21

парсинг для значений XML

0 голосов
/ 03 октября 2011

У меня есть простая строка xml, определенная следующим образом в коде c:

char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>";

Я хочу проанализировать xmlstr , чтобы получить все значения, присвоенные тегам str1, str2, str3.

Я использую libxml2 library . Поскольку я менее опытен в обработке XML, я не могу получить значения необходимых тегов. Я попробовал некоторые источники из сети, но я заканчиваю неправильные выводы.

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Использование библиотеки libxml2 для анализа вашей строки выглядело бы примерно так:

char xmlstr[] = ...;
char *str1, *str2, *str3;
xmlDocPtr doc = xmlReadDoc(BAD_CAST xmlstr, "http://someurl", NULL, 0);
xmlNodePtr root, child;

if(!doc)
{ /* error */ }

root = xmlDocGetRootElement(doc);

Теперь, когда мы проанализировали структуру DOM из вашей строки XML, мы можем извлечь значения, повторяя все дочерние значениявашего root тега:

for(child = root->children; child != NULL; child = child->next)
{
    if(xmlStrcmp(child->name, BAD_CAST "str1") == 0)
    {
        str1 = (char *)xmlNodeGetContent(child);
    }

    /* repeat for str2 and str3 */
    ...
}
0 голосов
/ 03 октября 2011

Обычно я выполняю анализ XML с использованием библиотеки minixml

Вы надеетесь, что это поможет вам

http://www.minixml.org/documentation.php/basics.html

...