关于网友提出的“ 使用libxml库 解析html与预期结果出错冲突,请高手解释下原因”问题疑问,本网通过在网上对“ 使用libxml库 解析html与预期结果出错冲突,请高手解释下原因”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 使用libxml库 解析html与预期结果出错冲突,请高手解释下原因
描述: 本人用的是libxml2库,解析过程如下
html文件如下:
head
body
解析代码如下,目的是解析出所有标签的content,并打印出来,代码如下:
int main()
{
xmlDocPtr pdoc = NULL;
xmlNodePtr proot = NULL, pcurnode = NULL;
pdoc = xmlReadFile("html_reg",NULL,0);//文件名html_reg
if(pdoc == NULL)
{
cout<<><>
return 0;
}
pcurnode = xmlDocGetRootElement(pdoc);
pcurnode = pcurnode->xmlChildrenNode;
int count=0;
xmlChar *value=NULL;
while(pcurnode != NULL)
{
count++;
if(!xmlStrcmp(pcurnode->name, (const xmlChar *)"body"))
{
value = xmlNodeGetContent(pcurnode);
cout<<><>
xmlFree(value);
}else//仍然打印结点内容
{
value = xmlNodeGetContent(pcurnode);
cout<<><>
xmlFree(value);
}
pcurnode = pcurnode->next;
}
cout<<"total count is"<<><>
xmlFreeDoc(pdoc);
exit(0);
}
输出的结果是:
head
body
total count is5
这个结果比较诡异,按理应该是只有
head
body
但最后计数是5,说明根节点有5个孩子结点
我用gdb跟了下
这五个结点的内容分别是:
\n
\nhead\n
\n
\nbody\n
\n
这是为什么呢?html文件中明明根节点只有两个子节点,怎么运行结果是5个。
请高手解释下。
以上介绍了“ 使用libxml库 解析html与预期结果出错冲突,请高手解释下原因”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2829349.html