ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

c++ и xml
  #1  
Старый 01.07.2009, 14:12
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме:
350627

Репутация: 1
По умолчанию c++ и xml

Всем привет !


Как можно разобрать xml в c++ под unix

например

Код:
char  xml =  "
                    <root>
                        <item>
                          <a>Helo !!!</a>
                        </item>
                    </root>
                     ";
вытащить "Helo !!" ?
 
Ответить с цитированием

  #2  
Старый 01.07.2009, 14:25
[n]-c0der
Участник форума
Регистрация: 03.02.2009
Сообщений: 104
Провел на форуме:
270228

Репутация: 70
По умолчанию

Вообще существует не мало либ, для работы с XML...
К примеру вот:
http://xerces.apache.org/index.html
http://www.chilkatsoft.com/xml-library.asp
CdataClass -> http://www.firstobject.com/dn_dataedit.htm
http://www.firstobject.com/dn_editor.htm - программка с исходным кодом, можно глянуть исходники
 
Ответить с цитированием

  #3  
Старый 01.07.2009, 19:58
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

советую pugixml

использовать так
Код:
#include <iostream>
#include "pugixml.hpp"

using namespace pugi;
using namespace std;

int main(int argc, char *argv[]) {

	xml_document doc;

	char xml[] = "<root><item><a>Hello world!</a></item></root>";
	doc.load(xml);
	xml_node item = doc.child("root").child("item").child("a");
	cout << item.child_value(); // Hello world!
	
	return 0;
}
удачи (:
 
Ответить с цитированием

  #4  
Старый 01.07.2009, 21:25
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме:
350627

Репутация: 1
По умолчанию

Цитата:
Сообщение от t4Nk  
советую pugixml

использовать так
Код:
#include <iostream>
#include "pugixml.hpp"

using namespace pugi;
using namespace std;

int main(int argc, char *argv[]) {

	xml_document doc;

	char xml[] = "<root><item><a>Hello world!</a></item></root>";
	doc.load(xml);
	xml_node item = doc.child("root").child("item").child("a");
	cout << item.child_value(); // Hello world!
	
	return 0;
}
удачи (:

Спасибо !

Проблема такая скачал я эту штуку папку src/ кинул на сервер компелю

g++ xml.cpp -o xml

выдает

Код:
/var/tmp//ccS1gZxe.o(.text+0x1bf): In function `main':
: undefined reference to `pugi::xml_document::xml_document()'
/var/tmp//ccS1gZxe.o(.text+0x246): In function `main':
: undefined reference to `pugi::xml_document::load(char const*, unsigned int)'
/var/tmp//ccS1gZxe.o(.text+0x25f): In function `main':
: undefined reference to `pugi::xml_node::child(char const*) const'
/var/tmp//ccS1gZxe.o(.text+0x275): In function `main':
: undefined reference to `pugi::xml_node::child(char const*) const'
/var/tmp//ccS1gZxe.o(.text+0x28b): In function `main':
: undefined reference to `pugi::xml_node::child(char const*) const'
/var/tmp//ccS1gZxe.o(.text+0x299): In function `main':
: undefined reference to `pugi::xml_node::child_value() const'
/var/tmp//ccS1gZxe.o(.text+0x2bc): In function `main':
: undefined reference to `pugi::xml_document::~xml_document()'
/var/tmp//ccS1gZxe.o(.text+0x2de): In function `main':
: undefined reference to `pugi::xml_document::~xml_document()'
что это может быть ?
 
Ответить с цитированием

  #5  
Старый 01.07.2009, 21:47
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

malik555, так ты компилмшь только xml.cpp, а надо еще и pugixml.cpp.
т.е. так g++ xml.cpp pugixml.cpp -o xml

да и #include "pugixml.hpp" - это в случае если этот файл лежит в одной папке с xml.cpp. Если у тебя в src, тогда нужно "/src/pugixml.cpp"

Последний раз редактировалось t4Nk; 01.07.2009 в 21:52..
 
Ответить с цитированием

  #6  
Старый 01.07.2009, 22:07
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме:
350627

Репутация: 1
По умолчанию

Спасиб все пашет !

только pugixml.cpp:25:29: warning: missing terminating ' character

что-то вылетает !


А если например нужно изминить "Helo !!!" в переменной xml

Код:
char xml[] = "<root><item><a>Hello !!!</a></item></root>";
что-б осталясь структура xml можно как-то ?
 
Ответить с цитированием

  #7  
Старый 01.07.2009, 22:36
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

Не совсем понял тебя
Код:
char xml[] = "<root><item><a>Hello!!!</a></item></root>";
doc.load(xml);
xml_node item = doc.child("root").child("item").child("a").first_child();
cout << item.value() << endl; // Hello!!!
item.set_value("text");
cout << item.value() << endl; // text
doc.print(cout); /* выведет xml-код

<root>
    <item>
        <a>Goodbye!!!</a>
    </item>
</root>
*/
там в архиве есть файл с примерами, можешь посмотреть там возможности либы )
 
Ответить с цитированием

  #8  
Старый 01.07.2009, 23:03
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме:
350627

Репутация: 1
По умолчанию

Цитата:
Сообщение от t4Nk  
Не совсем понял тебя
Код:
char xml[] = "<root><item><a>Hello!!!</a></item></root>";
doc.load(xml);
xml_node item = doc.child("root").child("item").child("a").first_child();
cout << item.value() << endl; // Hello!!!
item.set_value("text");
cout << item.value() << endl; // text
doc.print(cout); /* выведет xml-код

<root>
    <item>
        <a>Goodbye!!!</a>
    </item>
</root>
*/
там в архиве есть файл с примерами, можешь посмотреть там возможности либы )

То что нужно !

Спасибо ! классная либа - работать одно удовольствие !

Хотел тебе +1 добавить - но что-то не получается (наверное у меня репа 0) поэтому не выходит !
 
Ответить с цитированием

  #9  
Старый 02.07.2009, 01:12
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме:
350627

Репутация: 1
По умолчанию

Код:
#include <iostream>
#include "lib/xml/pugixml.hpp"





using namespace pugi;
using namespace std;

int main() {

  
    
    xml_document doc;

    char xml[] = "<root><item><a>1111</a><b>2222</b></item></root>";
    doc.load(xml);

    xml_node item = doc.child("root").child("item").child("b").first_child();
    
    
    string d = item.value();
    /*
     *  получается данные я могу считать только в 
     *  переменную с типом string !
     *  А мне дальше нужно эту переменую "d"  умножить / разделить
     *  как ее можно из string в int ?
     *
    */ 

    
    /*
     * А записать ответ назад в xml  можно только char 
     * получается ее еше нужно и в char переводить 
     *
     * Как правельно сделать ?
     *
    */

    item.set_value(d);
    doc.print(cout);


    return 0;
    
}
 
Ответить с цитированием

  #10  
Старый 02.07.2009, 01:31
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

как-то так
Код:
char *d = (char *)item.value();

int c = atoi(d);
char str[16];
itoa(c, str, 10);

item.set_value(str);
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишем Jabber-клиент на Delphi lytgeygen Статьи 5 07.06.2009 01:45
обработки XML сообщения полученного по POST burcev PHP, PERL, MySQL, JavaScript 12 20.02.2009 12:22
Как проще отправить xml на сервер используя php5? case PHP, PERL, MySQL, JavaScript 2 10.02.2009 19:50
Подборка сайтов по CSS, XML технологиям и Web2.0 решениям Trinux Избранное 8 06.12.2006 17:05
W3c выпустил обновлённые спецификации стандарта Xml TTN_ Мировые новости 0 21.08.2006 21:28



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ