使用 MiniXML 在 C 中解析 XML 文件

发布于 2024-09-14 21:27:42 字数 543 浏览 7 评论 0原文

我正在使用 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。我一直在阅读文档,但我不知道我做错了什么。以前有人遇到过这个问题吗?

I'm using the MiniXML library to parse a XML file in C, however when i try to read the node's value it returns NULL.

Here's the code:

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);
}

The problem is that node->value.text.string is NULL. I've been reading the documentation and I don't know what im doing wrong. Has anybody run into this problem before?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

多孤肩上扛 2024-09-21 21:27:42

尝试更改 for 循环以指定:

node->child->value.text.string

而不是:

node->value.text.string

这样有效吗?这只是一个猜测,但我认为可能有必要获取“节点”元素的数据。

如果这不起作用,请查看 C++:使用 Mini-XML 从 XML 文件加载长字符串时遇到问题。此人说他们需要使用 MXML_DESCEND_FIRST 而不是 MXML_DESCEND 来解决他们的问题。我不确定这对你的情况是否有帮助。

如果这些都不起作用,您也可以发布您的输入 XML,以便我们可以尝试重现您的问题。

Try changing your for-loop to specify:

node->child->value.text.string

instead of:

node->value.text.string

Does that work? It's just a guess, but I'm thinking it might be necessary to get the data for the "node" elements.

If that does not work, look at C++: Trouble loading long string from XML file using Mini-XML. This person says they needed to use MXML_DESCEND_FIRST instead of MXML_DESCEND to fix their problem. I'm not sure if it would help in your case.

If neither of these work, you might post your input XML as well so that we can try to recreate your problem.

土豪我们做朋友吧 2024-09-21 21:27:42

我遇到了同样的错误。感谢您发布的链接。我可以通过更改来修复错误
节点->子级->value.text.string 在节点->子级->value.opaque 中。
打开文件时无需更改任何内容,因为 type_cb 函数选择了正确的大小写。

I got the same error. Thanks for the link you posted. I can fixed the error by changing
node->child->value.text.string in node->child->value.opaque.
nothing to change when the file is opened because the type_cb function select the right case.

无所谓啦 2024-09-21 21:27:42

Minixml bug 502 - minixml mxmlLoad*() 函数无法使用 MXML_TEXT_CALLBACK 加载文本。
要解决此问题,请定义并使用您自己的文本回调

Minixml bug 502 - minixml mxmlLoad*() functions fail to load text with MXML_TEXT_CALLBACK.
To work around, define and use your own text callback

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文