xml到json的转换c++; 我开发了一个C++(Visual Studio 2005)应用程序,它将 XML 转换为 JSON我使用的是 RAPIDXML X/Cudio>和 RAPIDJSON/库。
XMLxml到json的转换c++; 我开发了一个C++(Visual Studio 2005)应用程序,它将 XML 转换为 JSON我使用的是 RAPIDXML X/Cudio>和 RAPIDJSON/库。,c++,json,xml,rapidxml,rapidjson,C++,Json,Xml,Rapidxml,Rapidjson,XML <?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95&
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications with XML.</description>
</book>
</catalog>
我知道了
{"catalog":{}}
我应该怎么做才能让我的代码解析XML树中的所有实体
我认为我的问题来自代码的这一部分:
C++:
{
"catalog": {
"book": {
"-id": "bk101",
"author": "Gambardella, Matthew",
"title": "XML Developer's Guide",
"genre": "Computer",
"price": "44.95",
"publish_date": "2000-10-01",
"description": "An in-depth look at creating applications with XML."
}
}
}
std::string xml2json(const char *xml_str)
{
std::cout<<xml_str;
rapidxml::xml_document<> *xml_doc = new rapidxml::xml_document<>();
xml_doc->parse<0> (const_cast<char *>(xml_str));
rapidjson::Document js_doc;
js_doc.SetObject();
rapidjson::Document::AllocatorType& allocator = js_doc.GetAllocator();
rapidxml::xml_node<> *xmlnode_chd;
for(xmlnode_chd = xml_doc->first_node()->first_node(); xmlnode_chd; xmlnode_chd = xmlnode_chd->next_sibling())
{
rapidjson::Value jsvalue_chd;
jsvalue_chd.SetObject();
rapidjson::Value jsvalue_name(xmlnode_chd->name(), allocator);
js_doc.AddMember(jsvalue_name, jsvalue_chd, allocator);
}
delete xml_doc;
rapidjson::StringBuffer buffer;
buffer.Clear();
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
js_doc.Accept(writer);
return buffer.GetString();
}
std::string xml2json(const char*xml_str)
{
std::coutfirst_node()->first_node();xmlnode_chd;xmlnode_chd=xmlnode_chd->next_sibling())
{
rapidjson::Value jsvalue_chd;
jsvalue_chd.SetObject();
rapidjson::Value jsvalue_name(xmlnode_chd->name(),分配器);
js_doc.AddMember(jsvalue_名称、jsvalue_chd、分配器);
}
删除xml_文档;
rapidjson::StringBuffer缓冲区;
buffer.Clear();
rapidjson::Writer-Writer(缓冲区);
js_文件接受(编写者);
返回buffer.GetString();
}
您迭代根节点的所有同级节点,但是您从不处理它们的子节点。您需要使用遍历树的每一层的算法。常规的选择是递归的。错误在第57行。您能再重复一次吗clear@BOUKERIBesmen让我们看看你的代码,而不是仅仅发布XML和JSON。你试过调试代码吗?您能正确阅读XML文档吗?能否正确创建输出数组?你的代码进入循环了吗?退出循环后,js_doc
包含什么?