使用libXML2在2个元素之间获取HTML

时间:2012-09-12 04:49:57

标签: c++ c libxml2

我必须在两个元素之间提取HTML。 e.g。

<html>
<head> </head>
<body>
<div>
<span id="start">                
<span> Some text </span>
<span> some other text</span> 
</span>
<span id="parent">                
<span id="target"> target node </span>
<span> some other text</span> 
</span>
</div>
</body>
</html>

现在我想从带有id“start”的span开始提取HTML内容,以及带有id“target”的span。

结果:

<span id="start">                
<span> Some text </span>
<span> some other text</span> 
</span>
<span>                
<span id="target"> target node </span>

我能够使用以下方法提取HTML:

我正在使用树解析方法。

htmlDocPtr xhtmlDoc = htmlReadFile(fileName.c_str(), "UTF-8",            HTML_PARSE_RECOVER|HTML_PARSE_NOERROR|HTML_PARSE_NOWARNING);

htmlNodePtr rootNodePtr = xmlDocGetRootElement(xhtmlDoc);

然后我解析到所需的节点,然后我使用了:

xmlBufferPtr nodeBuffer = xmlBufferCreate();
xmlNodeDump(nodeBuffer, xhtmlDoc, cur_node, 0, 1);
printf("%s\n",nodeBuffer->content);

注意:cur_node的类型为xmlNode *

但问题是,当我使用id“parent”到达span并提取整个HTML内容的数据时,我得到:

<span id="start">                
<span> Some text </span>
<span> some other text</span> 
</span>
<span id="parent">                
<span id="target"> target node </span>
<span> some other text</span> 
</span>

表示额外内容。我怎样才能达到预期的效果?

0 个答案:

没有答案