pugixml xpath - 找不到节点

时间:2013-12-13 15:39:41

标签: c++ xml pugixml

我正在使用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文档的问题?

谢谢!

1 个答案:

答案 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;