http://rapidxml.sourceforge.net/
Example XML from here:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms762271%28v=vs.85%29.aspx
Test code under the same folder of the RapidXML:
#include <iostream> #include <sstream> #include <fstream> #include "rapidxml/rapidxml.hpp" #include "rapidxml/rapidxml_print.hpp" using namespace std; using namespace rapidxml; char *buffer_file( const char *filename, size_t *buffer_len = NULL ) { //open file. note: it is important to say binary here, otherwise it does conversion that may change the length! std::fstream file( filename, std::ios::in|::std::ios::binary ); if( !file ) return NULL; //read the size... file.seekg(0, std::ios::end); size_t length = (size_t)file.tellg(); if( buffer_len ) *buffer_len = length; file.seekg(0, std::ios::beg); //read into memory buffer.. char *filebuf = new char[length+1]; file.read(filebuf, length); filebuf[length] = '\0'; //make it null-terminated file.close(); return filebuf; } int main(int argc, char* argv[]) { char* xml = buffer_file("books.xml"); //Parse the original document xml_document<> doc; doc.parse<0>(xml); xml_node<> * node = doc.first_node(); cout << "Name of my first node is: " << node->name() << "\n"; for( xml_node<>* node_ptr = node->first_node("book"); node_ptr != NULL; node_ptr = node_ptr->next_sibling()) cout<< "node name : " << node_ptr->first_attribute("id")->value()<< endl; return 0; }
No comments:
Post a Comment