Example #1
0
        public void writeXML()
        {
            if (db1.emptyDictionary())
            {
                Write("\n\nThe database is empty.\n");
            }

            else             //if the dictionary is not empty store key/value pairs into a XML file

            {
                DBElement <int, string> temp = new DBElement <int, string>();
                IEnumerable <int>       keys = db1.Keys();
                XDocument xml = new XDocument();
                xml.Declaration = new XDeclaration("1.0", "utf-8", "yes");

                XElement noSqlDb = new XElement("noSqlDb");
                xml.Add(noSqlDb);

                XElement keytype     = new XElement("keytype", "int");
                XElement payloadtype = new XElement("payloadtype", "string");
                noSqlDb.Add(keytype);
                noSqlDb.Add(payloadtype);

                foreach (var i in keys)
                {
                    db1.getValue(2, out temp);
                    XElement key = new XElement("key", ("key" + i));
                    noSqlDb.Add(key);                                               //noSqlDb's children
                    XElement element = new XElement("element");
                    noSqlDb.Add(element);                                           //noSqlDb's children

                    XElement name = new XElement("name", temp.name);                //name of the element
                    element.Add(name);
                    XElement descr = new XElement("descr", temp.descr);             //description of the element
                    element.Add(descr);
                    XElement timeStamp = new XElement("timeStamp", temp.timeStamp); //timeStamp of the element
                    element.Add(timeStamp);

                    if (temp.children.Count != 0)                         //children of the element
                    {
                        XElement children = new XElement("children");
                        element.Add(children);
                        foreach (var j in temp.children)
                        {
                            XElement childkey = new XElement("key", ("key" + j));
                            children.Add(childkey);
                        }
                    }

                    XElement payload = new XElement("payload", temp.payload);                            //payload of the element
                    element.Add(payload);
                }

                Console.Write("\n{0}\n", xml.Declaration);
                Console.Write(xml.ToString());
                Console.Write("\n\n");
                xml.Save(@"C:\Users\lxinghe\Downloads\Project2Starter\Test.xml");

                db1.emptyDBEngine();                        //empty DBEngine
            }
        }