【问题标题】:pugixml xpath -- node not foundpugixml xpath -- 未找到节点
【发布时间】:2013-12-13 15:39:41
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: c++ xml pugixml


    【解决方案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;
    

    【讨论】:

    • 啊,谢谢。我使用了 Tidy HTML(设置的噩梦),现在解析得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多