目标是使用外部库,通过解析XML文件来创建对象。这适用于指定文件夹中的真实XML文件,但我不想使用已编译的软件提供XML。所以我的想法是在编译时加载xml,然后用它来创建对象。
库提供的功能如下:
create(const std::string &xmlPathName, const std::string &variantName)
create(std::istream &xml, const std::string &variantName)
现在的问题是如何在编译时加载和存储XML文件,并在运行时调用这两个函数中的一个。
是否可以在编译时加载XML并将其存储为std :: istream? 或者有任何人有更好的建议来解决这个问题。
使用Windows环境和VC ++ 2010编译器。
答案 0 :(得分:0)
作为独立于平台的解决方案,我创建了一个Header文件,它包含整个xml作为String,并将其作为istringstream传递给create函数。
// xmlfile.h
static inline std::string BuildXmlFile ()
{
std::string xml;
xml = "<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>\n";
xml += "<Device xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
.
.
.
xml += "</Device>";
return xml;
}
std::istringstream xml_file(BuildXmlFile());