我在 C 代码中按以下方式定义了一个简单的 xml 字符串:
char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>";
我想解析 xmlstr 以获取分配给 str1、str2、str3 标记的所有值。
我正在使用libxml2 library 。由于我在 xml 处理方面经验不足,因此无法获取所需标签的值。我尝试了一些来自网络的资源,但我结束了错误的输出。
最佳答案
使用 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);
现在我们已经从 xml 字符串中解析出 DOM 结构,我们可以通过迭代 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 */
...
}
关于c - 解析 xml 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7632016/