C++将JSON转换为XML

C++ convert JSON to XML

本文关键字:XML 转换 JSON C++      更新时间:2024-09-27

我正试图找到一种将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。