如何使用pugixml从URL加载XML文件

时间:2018-06-19 18:20:42

标签: c++ xml memory pugixml

我正在尝试使用pugixml解析器从URL加载XML文件。问题是,如果您想从URL加载文件,则必须从内存加载文件,这对我来说非常混乱。这是我尝试过的方法,但是不起作用:

char* source = "http://some_url.xml";
int size = 256;
char* buffer = new char[size];

memcpy(buffer, source, size);

pugi::xml_document doc;
doc.load_buffer_inplace(buffer, size);
...
delete[] buffer;

以下是他们的文档:https://pugixml.org/docs/manual.html#loading.memory

请对我熟悉的人给我一个例子。

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣..这就是我的解决方法:

const char* f = "new_file.xml";
if (curl){
    const char* c_url = "some_url";

    FILE* ofile = fopen(f, "wb");
    if (!ofile) { fprintf(stderr, "Failed to open file: %s\n", strerror(errno)); }

    if (ofile){
        curl_easy_setopt(curl, CURLOPT_URL, c_url);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, ofile);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeData);
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

        curl_easy_perform(curl);

        fclose(ofile);
    }
}
pugi::xml_document doc;
doc.load_file(f);

感谢所有帮助人员!