我正在使用 MiniXML 库解析 C 中的 XML 文件,但是当我尝试读取节点的值时,它返回 NULL。
代码如下:
FILE *fp;
mxml_node_t *tree;
fp = fopen("test.xml", "r");
tree = mxmlLoadFile(NULL, fp, MXML_TEXT_CALLBACK);
fclose(fp);
mxml_node_t *node;
for(node = mxmlFindElement(tree, tree,"node",NULL, NULL,MXML_DESCEND);
node != NULL;
node = mxmlFindElement(node, tree,"node",NULL, NULL, MXML_DESCEND)) {
printf("Text: %s\n", node->value.text.string);
}
问题是 node->value.text.string 是 NULL。我一直在阅读文档,但我不知道我做错了什么。以前有人遇到过这个问题吗?
最佳答案
尝试更改您的 for 循环以指定:
node->child->value.text.string
代替:
node->value.text.string
那有用吗?这只是一个猜测,但我认为可能有必要获取“节点”元素的数据。
如果这不起作用,请查看 C++: Trouble loading long string from XML file using Mini-XML .此人说他们需要使用 MXML_DESCEND_FIRST 而不是 MXML_DESCEND 来解决他们的问题。我不确定这对你的情况是否有帮助。
如果这些都不起作用,您也可以发布您的输入 XML,以便我们可以尝试重现您的问题。
关于c - 使用 MiniXML 在 C 中解析 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3531148/