0

我正在使用 pugixml 的 xpath 函数来查找 html 文档中的某些节点(通过 curl 下载)。

我在用:

pugi::xml_document doc;


doc.load_buffer(htmlcontent.c_str(), htmlcontent.size());

pugi::xpath_node example= doc.select_single_node("//h2[@class='tv_header']");
std::cout << example.node();

返回 0 个节点。我知道这个节点存在于文档中。我只将该节点放在一个字符串中,它成功地找到了该节点。为什么在文档中找不到节点?html文档的编码有问题吗?

谢谢!

4

1 回答 1

1

您的文档的解析很可能在遇到该节点之前就停止了。

HTML 文档一般不能被 XML 解析器解析;除非您的文档是有效的 XHTML 文档,否则您需要使用 HTML 解析器。

要验证这一点,只需查看 load_buffer 返回的结果对象 - 即

pugi::xml_parse_result res = doc.load_buffer(htmlcontent.c_str(), htmlcontent.size());

std::cout << "Parsing result: " << res.description() << std::endl;
if (!res) std::cout << "Parsing stopped at offset " << res.offset << std::endl;
于 2013-12-14T05:33:43.650 回答