#c #xml #libxml2
#c #xml — файл #libxml2 #xml
Вопрос:
Мне нужно получить массив строк из текста в узле, который сам вырезается другим элементом в XML-файле. Я работаю на C с библиотекой libxml2.
Exemple :
<option>some text <middletag />other text</option>
Я пытался с xmlNodeGetContent(xmlnode);
, но я получаю только строку типа "some text other text"
.
Вопрос в следующем : возможно ли получить массив строк, который, в данном примере, был бы {"some text ", "other text"}
?
Ответ №1:
Я нашел решение, и я должен сказать, что мне стыдно, потому что мне потребовалось слишком много времени, чтобы найти его.
Это просто, я снова беру этот пример :
<option>some text <middletag />other text</option>
С помощью этого вы можете иметь xmlnode *
на <option>
узле. Мы можем найти часть, some text <middletag />other text
содержащую цикл, в списке xmlnode->children
. Нам просто нужно найти узлы с типом XML_TEXT_NODE
и получить содержимое.
Код :
xmlNode *node = option_node->children;
for (; node; node = node->next){
if (node->type == XML_TEXT_NODE) {
printf("%sn", node->content);
}
}
Результат :
some text
other text
Теперь, с помощью malloc / realloc, мы можем сохранить его в массив.