如何在编译时加载XML

时间:2017-04-19 14:21:06

标签: c++ xml

目标是使用外部库,通过解析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编译器。

1 个答案:

答案 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());