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