Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Отделение тегов из xml


Автор: admsasha 30.1.2007, 17:22
Использую libxml2

есть строка  
Код

<BS t="2" /><BG t="4" /><BG t="5" r="1"/><BEND />


как разделить контейнера, т.е. мне надо получить

Код

<BS t="2" />
<BG t="4" />
<BG t="5" r="1"/>
<BEND />


Думаю что есть команда, где вывести весь контейнер, а дальше cur = cur->next; и снова вывести....

Подскажите, как сделать ?

Автор: W4FhLF 30.1.2007, 19:12
Ну так замени все "><" на ">CRLF<", если я правильно тебя понял.

Автор: admsasha 30.1.2007, 19:17
Цитата(W4FhLF @  31.1.2007,  02:12 Найти цитируемый пост)
Ну так замени все "><" на ">CRLF<", если я правильно тебя понял. 

мне нужно потом отдельно с ними работать...

Чтоб в функцию этот отдельный тег запихать  (например, foo(teg); ), а не просто вывод на экран в другом виде.


Автор: Rockie 30.1.2007, 21:56
admsasha, если нужно изменить содержание файла, то можно написать свой парсер и переписать в другой файл:

если ( (считываемый символ == '<') && (предыдущий символ == '>') )

то добавляешь в файл '\n'.


Автор: admsasha 31.1.2007, 03:28
Цитата(Rockie @  31.1.2007,  04:56 Найти цитируемый пост)
admsasha, если нужно изменить содержание файла, то можно написать свой парсер и п

Нужно эти кусти потом будет записывать в массивы... 

Т.е. как я понял, с помошью libxml2 это не возможно, только свой парсер писать ??

Автор: admsasha 31.1.2007, 07:54
Код

int main(){
    char buf[128];
    char* tmp;

   strcpy(buf,"<BS t=\"2\" /><BG t=\"4\" /><BG t=\"5\" r=\"1\"/><BEND />");

    printf("%s/> \n",strtok(buf,"/>"));
    while (tmp=strtok(NULL,"/>")){
        printf("%s/> \n",tmp);
    }
}


Вот как придумал :-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)