c - 解析 xml 值

标签 c xml parsing libxml2

我在 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/

相关文章:

c - 使用 scanf 接受用户输入

在 C 中调用函数只知道运行时的参数类型?

java - 配置 Sonar 以从 Maven pom.xml 中排除文件

ruby - 如何使用 Nokogiri 阅读器界面告知节点的行号?

Go 中的 XML HTTP 发布

c - 传递值以进一步向下调用堆栈

c - 如何使用 getch() 在数组中添加一个 2 位数字作为单个条目?

ruby - 在我的系统上哪里可以找到 Ruby 的 parse.y 文件?

html - Xidel 提取标签内的数据——原始输出

C strncat 不工作并引发访问冲突