【发布时间】:2012-09-05 09:55:35
【问题描述】:
我的 xml 文件为:
<Config>
<tlvid id="2">
<type>10</type>
<Devid>001b00100000</Devid>
</tlvid>
<tlvid id="3">
<sessionid>abcd123</sessionid>
</tlvid>
解析xml文件的代码是:
xmlNode *cur_node = NULL,*sub_node = NULL;
xmlChar *key;
cur_node = a_node->xmlChildrenNode;
while(cur_node !=NULL) {
if((!xmlStrcmp(cur_node->name,(const xmlChar*)"tlvid"))) {
key = xmlGetProp(cur_node,(const xmlChar*)"id");
printf("key: %s\n ",key);
xmlFree(key);
sub_node = cur_node->xmlChildrenNode;
while(sub_node !=NULL) {
key = xmlNodeGetContent(sub_node);
printf("subkey: %s\n ",key);
xmlFree(key);
sub_node = sub_node->next;
}
}
cur_node = cur_node->next;
}
输出为:
键:2
子项:
子键:10
子项:
子键:001b00100000
子项:
键:3
子项:
子项:abcd123
子项:
我已经尝试过 xmlKeepBlanksDefault(0);在while循环下添加以避免空白,但没有帮助。你能帮我删除这些空白吗?谢谢。
【问题讨论】:
-
打印前不能检查
key是否为空吗? -
感谢您的回复。是的,我已经检查过了,但仍然打印相同。在打印之前给出 if(key)。
-
你应该检查一下
if (strlen(key) != 0)之类的,因为key仍然是一个有效的指针。 -
没有用。仍然是相同的输出。尝试打印 strlen(key),每个空格的值分别为 5、5、4、2。
标签: c xml-parsing libxml2