Je développe un C++ (visual studio 2005) app qui convertit xml
à json
J'utilise rapidxml
et rapidjson
bibliothèques.xml à la conversion JSON C++
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>
Json:
{
"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."
}
}
}
Je suis arrivé ce
{"catalog":{}}
Que dois-je faire pour mon code Parse toutes les entités dans les arbres XML .
Je pense que mon problème vient de cette partie du code:
C++:
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();
}
Erreur sur la ligne 57. – YSC
pourriez-vous être plus clair –
@BOUKERIBesmen c'est vous qui devez être plus clair. –