парсинг значения между двумя тегами XML - PullRequest
1 голос
/ 16 августа 2010

Я знаю, что об этом уже спрашивали, но не могу найти подходящего решения, поэтому я сформулирую проблему:

У меня есть строка символов, похожая на файл XML. Это не строка XML, но она имеет открывающие и закрывающие теги. Вся информация находится в одной строке, например:

<user>username</username>random data;some more random data<another tag>data</anothertag>randomdata;<mydata>myinfo</mydata>some more random data....

и т.д ...

Я пытаюсь прочитать ТОЛЬКО что находится между <mydata></mydata>. Есть ли способ просто разобрать это?

спасибо, код приветствуется.

1 Ответ

2 голосов
/ 16 августа 2010

Я бы просто использовал strstr ():

char * get_value(const char *input)
{
  const char *start, *end;

  if((start = strstr(input, "<mydata>")) != NULL)
  {
    start += strlen("<mydata>");
    if((end = strstr(start, "</mydata>")) != NULL)
    {
      char *out = malloc(end - start + 1);
      if(out != NULL)
      {
        memcpy(out, start, (end - start));
        out[end - start] = '\0';
        return out;
      }
    }
  }
  return NULL;
}

Обратите внимание, что вышеприведенное не проверено, записано непосредственно в поле редактирования SO.Таким образом, почти гарантированно будет содержаться хотя бы одна ошибочная ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...