XML: получение массива строк из текста, вырезанного по элементу

#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, мы можем сохранить его в массив.