Sample code for 30+ languages & platforms
C++

Serialize / Deserialize Hashtable to/from XML

Demonstrates how to seralize / deserialize a Hashtable to/from XML.

Note: This example requires Chilkat v9.5.0.64 or later.

Chilkat C++ Downloads

C++
#include <CkHashtable.h>
#include <CkStringBuilder.h>
#include <CkStringTable.h>

void ChilkatSample(void)
    {
    //  Note: This example requires Chilkat v9.5.0.64 or later.

    //  Add some entries to a hashtable.
    CkHashtable hashTab;

    hashTab.AddStr("aaa","111");
    hashTab.AddStr("bbb","222");
    hashTab.AddStr("ccc","333");

    //  Serialize to XML
    CkStringBuilder sb;
    hashTab.ToXmlSb(sb);
    std::cout << sb.getAsString() << "\r\n";
    std::cout << "---" << "\r\n";

    //  The output is as follows.  Each hash table entry
    //  is contained in an "e" node.  The entry's key
    //  is in the "k" node, and the value in the "v" node.

    //  <?xml version="1.0" encoding="utf8-8"?>
    //  <hashtable>
    //  <e><k>aaa</k><v>111</v></e>
    //  <e><k>bbb</k><v>222</v></e>
    //  <e><k>ccc</k><v>333</v></e>
    //  </hashtable>
    //  

    //  Now load (deserialize) into a new hash table.
    CkHashtable hashTab2;
    hashTab2.AddFromXmlSb(sb);

    //  Get the hash table keys, and lookup each (to show 
    //  that the hash table was correctly deserialized).
    //  The GetKeys method can return the keys in any order.
    CkStringTable sTable;
    hashTab2.GetKeys(sTable);

    int i = 0;
    int numKeys = sTable.get_Count();
    while (i < numKeys) {
        const char *key = sTable.stringAt(i);
        std::cout << key << ": " << hashTab2.lookupStr(key) << "\r\n";
        i = i + 1;
    }
    }