您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 使用libxml库 解析html与预期结果出错冲突,请高手解释下原因

使用libxml库 解析html与预期结果出错冲突,请高手解释下原因

来源:网络整理     时间:2016/7/20 15:30:05     关键词:

关于网友提出的“ 使用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

相关图片

相关文章