PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkStringTable.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkHashtable.pb"
Procedure ChilkatExample()
; Note: This example requires Chilkat v9.5.0.64 or later.
; Add some entries to a hashtable.
hashTab.i = CkHashtable::ckCreate()
If hashTab.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHashtable::ckAddStr(hashTab,"aaa","111")
CkHashtable::ckAddStr(hashTab,"bbb","222")
CkHashtable::ckAddStr(hashTab,"ccc","333")
; Serialize to XML
sb.i = CkStringBuilder::ckCreate()
If sb.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHashtable::ckToXmlSb(hashTab,sb)
Debug CkStringBuilder::ckGetAsString(sb)
Debug "---"
; 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.
hashTab2.i = CkHashtable::ckCreate()
If hashTab2.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHashtable::ckAddFromXmlSb(hashTab2,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.
sTable.i = CkStringTable::ckCreate()
If sTable.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHashtable::ckGetKeys(hashTab2,sTable)
i.i = 0
numKeys.i = CkStringTable::ckCount(sTable)
While i < numKeys
key.s = CkStringTable::ckStringAt(sTable,i)
Debug key + ": " + CkHashtable::ckLookupStr(hashTab2,key)
i = i + 1
Wend
CkHashtable::ckDispose(hashTab)
CkStringBuilder::ckDispose(sb)
CkHashtable::ckDispose(hashTab2)
CkStringTable::ckDispose(sTable)
ProcedureReturn
EndProcedure