Я внедряю libxmlrpc в проект C ++, так или иначе, мой RPC-сервер возвратил структуру с 52 структурами-членами в них.
Я не знаю, что это за ключи, поскольку они являются непрозрачными ссылками, поэтому я не могу на них полагаться.
Как я могу перебрать структуру, я бы подумал, что это со следующим кодом:
XmlRpcValue param_array = XmlRpcValue::makeArray();
param_array.arrayAppendItem(XmlRpcValue::makeString(this->sessionKey));
param_array.arrayAppendItem(XmlRpcValue::makeString("petabytes"));
XmlRpcValue result = ServerCall("Charter.getDataWarehouse.storage.capacity", param_array, url);
int index = 0;
while(index < result.structSize())
{
XmlRpcValue Data = result.getStruct();
//Would have thought it would work with this ;( shit documentation libxmlrpc has, grrrr
//Data.structGetKeyAndValue(index);
//This for example works, because I know the opaque reference, but in real life I wont
cout << Data.structGetValue("OpaqueRef:d4e60db6-2271-b0ac-d362-1b51220980af").structSize() << endl;
index++;
}
Однако ошибки Data.structGetKeyAndValue (index) с:
no matching function for call to 'XmlRpcValue::structGetKeyAndValue(int&)
Это нормально, я понимаю, что это не публичная (ну, я думаю, это не публичная функция-член) xmlrpcvalue
, однако я не могу найти ничего, что позволило бы мне сделать это.
Кто-нибудь имеет опыт работы с этим?