如何使用 pugixml 从 url 加载 XML 文件
How to load XML file from url with 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
谁能更熟悉这些东西,请给我一个如何做的例子。
如果有人感兴趣..我就是这样解决的:
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);
感谢大家的帮助!
我正在尝试使用 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
谁能更熟悉这些东西,请给我一个如何做的例子。
如果有人感兴趣..我就是这样解决的:
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);
感谢大家的帮助!