从xml文件输入并使用rapidxml解析

时间:2012-08-04 16:27:16

标签: c++ eclipse rapidxml

我正在尝试使用c ++

使用rapidxml做这样的事情
xml_document<> doc; 
ifstream myfile("map.osm"); 
doc.parse<0>(myfile); 

并收到以下错误

此行的多个标记 - 参数无效'候选者是:void parse(char *)' - 无法解析符号'解析'

文件大小最多可达几兆字节。

请帮助

1 个答案:

答案 0 :(得分:0)

您必须首先将文件加载到空终止的char缓冲区中,如官方文档中所述。

http://rapidxml.sourceforge.net/manual.html#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c

只需将文件内容读入char数组,然后使用此数组传递给xml_document::parse()函数。

如果您使用的是ifstream,则可以使用以下内容将整个文件内容读取到缓冲区

 ifstream file ("test.xml");
 if (file.is_open())
 {
    file.seekg(0,ios::end);
    int size = file.tellg();
    file.seekg(0,ios::beg);

    char* buffer = new char [size];

    file.read (buffer, size);
    file.close();

    // your file should now be in the char buffer - 
    // use this to parse your xml     

    delete[] buffer;
 }

请注意我没有编译上面的代码,只是从内存中编写,但这是一个粗略的想法。查看ifstream的文档以获取确切的详细信息。无论如何,这应该可以帮助您入门。