rapidxml - 如何创建xml_document(s)数组?

时间:2013-12-01 14:42:26

标签: rapidxml

我有多个要解析的文档,我需要在创建类的生命周期内访问所有文档对象。如何创建xml_document指针数组作为成员变量?

我尝试按如下方式创建单个成员变量:

私人: rapidxml :: xml_document<> * m_pDoc; //不编译

错误:名称后跟“::”必须是类或命名空间名称

我确定这是因为模板类没有很好地定义,但我不确定如何正确定义指针。

2 个答案:

答案 0 :(得分:1)

这对我来说很好。错误信息暗示你已经忘记了这一点,也许?

#include "rapidxml.hpp"

答案 1 :(得分:0)

每次传递xml时,Rapidxml都会引用向量缓冲区的指针。因此,存储缓冲区以及xml_document<>文档。

放置xml文档的文件路径

std::array<vector<char>,numXmlDocs> XMLDocBuffers;
std::array<xml_document<>,numXmlDocs> XMLDocs;

//For each xml doc, read and store it in an array
for(int i=0;i<numXmlDocs;i++){      
    //Parse each xml into the buffer array
    char xmlFileName[100] ;
    sprintf(xmlFileName,"%s",XMLFilePaths[i]);
    ifstream theFile (xmlFileName);
    vector<char> buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>());
    buffer.push_back('\0'); 

    //Store the buffer
    XMLDocBuffers[i] =  buffer; 

    // Parse the buffer usingthe xml file parsing library into doc 
    XMLDocs[i].parse<0>(&(XMLDataset_StringDocs[i][0]));

    xml_node<> *root_node;      // Find the root node
    root_node = (XMLDocs[i]).first_node(typesOfSamples);

将缓冲区和xml文档存储到数组中

IN clause