С основными моментами я разобрался, но не могу понять как получить данные которые находятся между тегами.
<div class=" ">
<select class=" form-control" id="id_city" name="city">
<option value="">---------</option>
<option value="1" selected="selected">Екатеринбург</option>
</select>
Я могу получить данные с id, name, options value. Но не могу получить название самого города "Екатеринбург".
Если вы уже нашли нужный элемент (GumboNode*
), то возьмите первого его потомка и прочтите член v.text.text
Следующий код находит выбранный тег OPTION и выводит его текст:
GumboOutput* output = gumbo_parse("<div....");
GumboNode* select_element = 0;
search_for_select(output->root, "id_city", &select_element);
if (select_element) {
GumboVector* children = &select_element->v.element.children;
for (unsigned int i = 0; i < children->length; ++i) {
GumboNode* node = static_cast<GumboNode*>(children->data[i]);
if (node->type != GUMBO_NODE_ELEMENT) {
continue;
}
if (node->v.element.tag == GUMBO_TAG_OPTION) {
GumboAttribute* value_attr = gumbo_get_attribute(&node->v.element.attributes, "selected");
if (value_attr) {
GumboNode* option_text = static_cast<GumboNode*>(node->v.element.children.data[0]);
if (option_text->type == GUMBO_NODE_TEXT || option_text->type == GUMBO_NODE_WHITESPACE) {
// Выводим текст из тега OPTION
std::cout << option_text->v.text.text;
}
}
}
}
}
gumbo_destroy_output(&kGumboDefaultOptions, output);
Функция для поиска тега SELECT:
void search_for_select(GumboNode* node, const char* id, GumboNode** out) {
if (node->type != GUMBO_NODE_ELEMENT) {
return;
}
GumboAttribute* select;
if (node->v.element.tag == GUMBO_TAG_SELECT &&
(select = gumbo_get_attribute(&node->v.element.attributes, "id"))) {
if (!strcmp(select->value, id)) {
*out = node;
return;
}
std::cout << select->value << std::endl;
}
GumboVector* children = &node->v.element.children;
for (unsigned int i = 0; i < children->length; ++i) {
search_for_select(static_cast<GumboNode*>(children->data[i]), id, out);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Проблема такая: при любом раскладе переменная getchar a возвращает '\n' и выполняет default (goto x), не учитывая остальноеКак можно исправить сие недоразумение?
Проект - Создаются кружки и их должны связывать линии, кружки можно двигать и линии тоже будут вместе с ними двигатьсяПри создании 3+ кружков...