c++
  • xml
  • pugixml
  • 2013-12-13 49 views 0 likes 
    0

    我使用pugixml的xpath函數來查找html文檔中的某些節點(通過curl下載)。pugixml xpath - node not found

    我使用:

    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

    在遇到節點之前解析文檔很可能會停止。

    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; 
    
    +0

    啊感謝。我用Tidy HTML(夢魘設置),它現在解析得很好。 – user3083672

    相關問題