ошибка компиляции htmlcxx

#c #compiler-errors

#c #ошибки компилятора

Вопрос:

я пытаюсь использовать htmlcxx для синтаксического анализа веб-страницы. Проблема в том, что пример не поддается компиляции atm.

 tree<HTML::Node>::iterator it = dom.begin();
tree<HTML::Node>::iterator end = dom.end();
for (; it != end;   it)
{
    if (it->tagName() == "A")
    {
        it->parseAttributes();
        std::cout << it->attributes("href");
        std::cout<< std::endl;
    }
}
  

проблема заключается it->attributes("href");

остальное работает нормально. но с этой строкой я получаю

ошибка: нет соответствующей функции для вызова 'htmlcxx::HTML::Node::attributes(const char [5])'

/usr/local/include/htmlcxx/html/Node.h:51: примечание: кандидатами являются: const std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >amp; htmlcxx::HTML::Node::attributes() const

У кого-нибудь есть идея?

Ответ №1:

Я только что взглянул на исходный код. Нужная вам функция является attribute , а не attributes :

 // attribute takes a string
std::pair<bool, std::string> attribute(const std::string amp;attr) const { ... }

// attributes takes nothing
const std::map<std::string, std::string>amp; attributes() const { return this->mAttributes; }
  

Ответ №2:

Похоже, что attributes функция не принимает имя атрибута в качестве параметра, а вместо этого возвращает все атрибуты в map. Вы должны прочитать документацию библиотеки, чтобы подтвердить это.

Ответ №3:

У меня была та же проблема. Для получения дополнительной информации об использовании htmlcxx я нашел эти страницы полезными (поскольку htmlcxx использует этот класс tree):