我正在使用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文档的问题?
谢谢!
答案 0 :(得分:0)
在遇到节点之前,文档的解析可能会停止。
HTML文档通常无法解析HTML文档;除非您的文档是有效的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;