xml到json的转换c++; 我开发了一个C++(Visual Studio 2005)应用程序,它将 XML 转换为 JSON我使用的是 RAPIDXML X/Cudio>和 RAPIDJSON/库。

xml到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

<?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
包含什么?