我在AC代码以下列方式定义一个简单的XML字符串:解析的XML值
char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>";
我想解析xmlstr获取分配给STR1,STR2,STR3标签的所有值。我正在使用libxml2 library。由于我在XML处理方面经验不足,无法获取所需标记的值。我尝试了一些来自网络的消息,但是我输错了结果。
我在AC代码以下列方式定义一个简单的XML字符串:解析的XML值
char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>";
我想解析xmlstr获取分配给STR1,STR2,STR3标签的所有值。我正在使用libxml2 library。由于我在XML处理方面经验不足,无法获取所需标记的值。我尝试了一些来自网络的消息,但是我输错了结果。
使用libxml2的解析你的字符串会是这个样子做XML解析:
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结构,我们可以通过迭代yo的所有子值来提取这些值ur 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 */
...
}
在上面的url中有什么意义。我要给我的程序 – user976211
坦率地说,我不确定。文档只声明这被用作“* base *”,无论如何。我想这个小例子并不重要。 – Constantinius
我也发现一样。但是,感谢您的帮助。我可以做这个小补丁代码嵌入到我的巨大应用程序。 – user976211
我会很有帮助,如果你能为此提供c代码,就像你熟悉mxml一样。 – user976211