我正试图找到一种将JSON字符串转换为XML文档的方法。为此,我们评估了PICOJSON来解析JSON,并评估了Puixml来生成XML文档。
我知道这在.Net和JAVA中很容易。我的JSON是动态的,并且基于我必须转换为XML的动态JSON。
我需要一些关于如何实现这一目标的初步帮助。以下代码是解析JSON 的示例
#include <iostream>
#include "include/picojson.h";
#include "include/pugixml.hpp";
using namespace std;
int main() {
const char* json =
"{"menu": {"
""id": "f","
""popup": {"
" "menuitem": ["
" {"v": "0"},"
" {"v": "1"},"
" {"v": "2"}"
" ]"
" }"
"}"
"}";
picojson::value v;
std::string err;
const char* json_end = picojson::parse(v, json, json + strlen(json), &err);
}
我认为最初的方法是将JSON字符串转换为JSON对象(不确定如何做到这一点(,然后递归地构造XML下面的代码会将JSON字符串转换为Object吗?
picojson::parse(v, json, json + strlen(json), &err);
if (!err.empty()) {
std::cerr << err << std::endl;
}
有人能用初始代码指导我如何做到这一点,如何从JSON构建XML吗?
如果您愿意使用RapidJSON,可以基于此示例制作SAX解析器,并将每个JSON读取事件映射到同源的XML写入操作。
提示:这可能意味着在某个地方保留一个pugi::xml_node currentNode
来跟踪正在处理的当前节点
Edit
POCO似乎毕竟有类似SAX的处理程序,所以您甚至不需要RapidJSON
如果您想最大限度地减少依赖关系,也可以使用POCO.XML而不是puixml。