Pobrałem sobie RapidXml naszego rodaka stąd http://rapidxml.sourceforge.net/
(cztery pliku nagłówkowe, które załączyłem do mojego projektu).
Tak wygląda mój kod
#include <memory>
#include <iostream>
#include <fstream>
#include <vector>
#include "rapidxml.hpp"
#include "rapidxml_iterators.hpp"
#include "rapidxml_print.hpp"
#include "rapidxml_utils.hpp"
using namespace std;
using namespace rapidxml;
int main()
{
// moj kod
string zawartosc = "";
fstream plik;
string linia;
plik.open("slowka.xml", ios::in);
while(getline(plik,linia))
zawartosc += linia;
plik.close();
// fragment z Manual, rozdział 2
xml_document<> doc; // character type defaults to char
doc.parse<0>(zawartosc.c_str()); // 0 means default parse flags
cout << "Name of my first node is: " << doc.first_node()->name() << "\n";
xml_node<> *node = doc.first_node("foobar");
cout << "Node foobar has value " << node->value() << "\n";
for ( xml_attribute<> *attr = node->first_attribute(); attr; attr = attr->next_attribute() )
{
cout << "Node foobar has attribute " << attr->name() << " ";
cout << "with value " << attr->value() << "\n";
}
return 0;
}
I wywala 21 błędów
http://zapisz.net/view.php?filename=728_przechwytywanie.png
Jak usunę mój kod i dam tak jak jest w manual czyli
doc.parse<0>(text);
To też nie działa, bo wiadomo, nie zadeklarowałem nigdzie zmiennej text (nie wiem jakiego typu ma niby być, jak const char* to przecież zawartosc.c_str() powinno działać), ale przede wszystkim wykazuje błędy w kodzie biblioteki.
Ktoś pomoże?
EDIT
Zmieniłem kod
typedef typename xml_node<Ch> value_type;
typedef typename xml_node<Ch> &reference;
typedef typename xml_node<Ch> *pointer;
na
typedef xml_node<Ch> value_type;
typedef xml_node<Ch> reference;
typedef xml_node<Ch> pointer;
i teraz jest jeden błąd związany z linijką
doc.parse<0>(zawartosc.c_str()); // 0 means default parse flags
no matching function...