我必须在两个元素之间提取 HTML。例如
<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 到 id 为“target”的 HTML 内容。
结果:
<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”的跨度并提取给定整个 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>
意味着额外的内容。我怎样才能达到预期的效果?