Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

rapidxml - nie dziala

Ostatnio zmodyfikowano 2014-08-14 11:36
Autor Wiadomość
JarekKatowice
Temat założony przez niniejszego użytkownika
rapidxml - nie dziala
» 2014-08-13 22:36:34
Witam!
Probowalem sie pobawic ta biblioteka wg dokumantacji ale nie wiedziec czemu nie umie mi parsowac - wywala wyjatek a plik xml jest napewno ok.



<code>
#include<iostream>
#include<fstream>
#include <conio.h>
#include<vector>
#include "xml\rapidxml\rapidxml.hpp"
#include "xml\rapidxml\rapidxml_print.hpp"

using namespace std;

char * loadXmlFile(string filePath)
{
ifstream xmlFile;
xmlFile.open(filePath,ifstream::in);
if(xmlFile){
xmlFile.seekg (0, xmlFile.end);
int length = xmlFile.tellg();
xmlFile.seekg (0, xmlFile.beg);
char * buffer = new char [length];
xmlFile.read (buffer,length);
xmlFile.close();
return buffer;
}
else return NULL;

}


int main()
{

    char *TrescPlikuXML=loadXmlFile("xml/anim3.xml");
cout<<TrescPlikuXML;
rapidxml::xml_document <> dokument;
try
{
dokument.parse < 0 >( TrescPlikuXML );
rapidxml::xml_node <>* pKorzen = dokument.first_node();
cout<<pKorzen->name();
}
catch( rapidxml::parse_error p )
{
cout<<p.what()<<endl;


}
getch();
return 0;

}
</code>

Wywala wyjatek: expected <


oto plik xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<Animacja1>
<nazwa>Bieg</nazwa>
<klatki>
<klatka>
<numer>1</numer>
<left>0</left>
<top>0</top>
<width>50</width>
<height>100</height>
</klatka>
<klatka>
<numer>2</numer>
<left>51</left>
<top>0</top>
<width>50</width>
<height>100</height>
</klatka>
<klatka>
<numer>3</numer>
<left>102</left>
<top>0</top>
<width>52</width>
<height>100</height>
</klatka>
</klatki>
</Animacja1>
</root>


nie dziala nawet przy

<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>


pozdrawiam
P-115427
Monika90
» 2014-08-13 23:16:40
argumet funkcji parse ma być stringiem zakończonym zerem, twój nie jest.

Na dodatek to:

xmlFile.seekg (0, xmlFile.end);
int length = xmlFile.tellg();

dla plików otworzonych w trybie tekstowym daje większą wartość niż ilość znaków które się uda z pliku wczytać.
P-115430
JarekKatowice
Temat założony przez niniejszego użytkownika
» 2014-08-13 23:56:21
zaraz zaraz ....z tego co wiem to  char * gwarantuje ze zakonczone jest zerem, czyz nie?

co do drugiej czesci odp hmmmmmmm.... xml jest zwyklym testem bez bez dziwnych znakow... w takim razie wg Ciebie jak powinienem odworzyc plik i przeniesc do pamieci by bylo ok (linia po lini?? )

dzieki za odp


P-115431
pekfos
» 2014-08-14 01:57:29
zaraz zaraz ....z tego co wiem to  char * gwarantuje ze zakonczone jest zerem, czyz nie?
Oczywiście, że nie.
P-115433
Monika90
» 2014-08-14 11:36:28
W pliku rapidxml_utils.hpp jest szablon klasy rapidxml::file możesz go użyć.
P-115436
« 1 »
  Strona 1 z 1