gpt4 book ai didi

c - C语言高效解析XML字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:51 34 4
gpt4 key购买 nike

我需要在 C 中解析由 API 返回的 XML 编码字符串,并查找特定标记及其值。实现这一目标的最有效方法是什么?我不能使用非标准库或第 3 方库,例如 Boost。

最佳答案

我在类(class)中做到了。

您应该使用链表来解析您的文档。

我采用的方法(这种方法非常有效)是先在开头的“<”之后直接解析 char*,然后遍历所有内容,直到找到结尾的“>”。将每个单词放入一个数组中是个好主意。

这意味着,您在此之前阅读的所有内容都与数组中的第一个 char * 相关联。

之后,您只需再解析 2 个东西,即属性及其值。属性以'='结尾,这意味着从前一个空格字符到这个'='符号,是属性,'='字符后面的所有内容到下一个'',都是它的值。

<model name="Homo sapiens Glycolysis" id="Pathway146">

这里,“model”是标签,“name”是属性,“Homo sapiens Glycolysis”是它的值。

然后,当您成功解析这些字符串时,填充您的链表。每个节点都是一个新标签。

这样,当要求查找特定字段时,只需从列表开始(从头开始)到最后,搜索特定标记、属性或值。找到后,显示整个节点。

这是我的 .h,如果它有帮助的话。

typedef struct   s_elem {
char *tag;
char **attributes;
char **values;
struct s_elem *next;
struct s_elem *prev;
} t_elem;

typedef struct s_list {
struct s_elem *first;
struct s_elem *last;
} t_list;

这不是唯一的方法。您可以将属性及其值存储到单个字符串中,但您必须打印它并注意“=”。

希望对您有所帮助。

关于c - C语言高效解析XML字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937371/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com