rapidxml - nie dziala
Ostatnio zmodyfikowano 2014-08-14 11:36
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 |
|
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ć. |
|
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
|
|
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. |
|
Monika90 |
» 2014-08-14 11:36:28 W pliku rapidxml_utils.hpp jest szablon klasy rapidxml::file możesz go użyć. |
|
« 1 » |