public static List <WallProjectionAndPositionSample> readWallProjectionAndPositionSamplesFromXML()
        {
            List <WallProjectionAndPositionSample> sampleList = new List <WallProjectionAndPositionSample>();

            XmlDocument docConfig = new XmlDocument();

            docConfig.Load(AppDomain.CurrentDomain.BaseDirectory + "\\WallProjectionAndPositionSamples.xml");

            XmlNodeList devices = docConfig.SelectSingleNode("/devices").ChildNodes;

            foreach (XmlNode device in devices)
            {
                String knndeviceIdentifier = "";
                foreach (XmlNode prop in device)
                {
                    if (prop.Name.Equals("deviceIdentifier"))
                    {
                        knndeviceIdentifier = prop.InnerText;
                    }
                    else if (prop.Name.Equals("samples"))
                    {
                        foreach (XmlNode sample in prop.ChildNodes)
                        {
                            WallProjectionAndPositionSample s = new WallProjectionAndPositionSample(new Point3D(
                                                                                                        double.Parse(sample.FirstChild.ChildNodes[0].InnerText),
                                                                                                        double.Parse(sample.FirstChild.ChildNodes[1].InnerText),
                                                                                                        double.Parse(sample.FirstChild.ChildNodes[2].InnerText)),

                                                                                                    new Point3D(
                                                                                                        double.Parse(sample.ChildNodes[1].ChildNodes[0].InnerText),
                                                                                                        double.Parse(sample.ChildNodes[1].ChildNodes[1].InnerText),
                                                                                                        double.Parse(sample.ChildNodes[1].ChildNodes[2].InnerText)
                                                                                                        ), knndeviceIdentifier);

                            sampleList.Add(s);
                        }
                    }
                }
            }

            return(sampleList);
        }
        public static void writeWallProjectionAndPositionSampleToXML(WallProjectionAndPositionSample sample)
        {
            XmlDocument docConfig = new XmlDocument();

            docConfig.Load(AppDomain.CurrentDomain.BaseDirectory + "\\WallProjectionAndPositionSamples.xml");
            XmlNode node = docConfig.SelectSingleNode("/devices");

            foreach (XmlNode deviceNode in node.ChildNodes)
            {
                if (deviceNode.FirstChild.InnerText == sample.sampledeviceIdentifier && deviceNode.FirstChild.Name == "deviceIdentifier")
                {
                    if (deviceNode.ChildNodes[1].Name == "samples")
                    {
                        XmlElement xmlSample = docConfig.CreateElement("sample");
                        XmlElement samplePos = docConfig.CreateElement("wallPosition");
                        XmlElement posX      = docConfig.CreateElement("X");
                        posX.InnerText = sample.wallPositionX.ToString();
                        samplePos.AppendChild(posX);
                        XmlElement posY = docConfig.CreateElement("Y");
                        posY.InnerText = sample.wallPositionY.ToString();
                        samplePos.AppendChild(posY);
                        XmlElement posZ = docConfig.CreateElement("Z");
                        posZ.InnerText = sample.wallPositionZ.ToString();
                        samplePos.AppendChild(posZ);
                        xmlSample.AppendChild(samplePos);

                        XmlElement writepersonPosition = docConfig.CreateElement("personPosition");
                        XmlElement writeppX            = docConfig.CreateElement("X");
                        writeppX.InnerText = sample.personPositionX.ToString();
                        writepersonPosition.AppendChild(writeppX);
                        XmlElement writeppY = docConfig.CreateElement("Y");
                        writeppY.InnerText = sample.personPositionY.ToString();
                        writepersonPosition.AppendChild(writeppY);
                        XmlElement writeppZ = docConfig.CreateElement("Z");
                        writeppZ.InnerText = sample.personPositionZ.ToString();
                        writepersonPosition.AppendChild(writeppZ);
                        xmlSample.AppendChild(writepersonPosition);
                        //xmlPosition.SetAttribute("X:", sample.x.ToString());
                        //xmlPosition.SetAttribute("Y:", sample.y.ToString());
                        //xmlPosition.SetAttribute("Z:", sample.z.ToString());
                        deviceNode.ChildNodes[1].AppendChild(xmlSample);

                        docConfig.Save(AppDomain.CurrentDomain.BaseDirectory + "\\WallProjectionAndPositionSamples.xml");
                        return;
                    }
                }
            }

            XmlElement newDev           = docConfig.CreateElement("device");
            XmlElement deviceIdentifier = docConfig.CreateElement("deviceIdentifier");

            deviceIdentifier.InnerText = sample.sampledeviceIdentifier;
            XmlElement samplePositions = docConfig.CreateElement("samples");
            XmlElement newSample       = docConfig.CreateElement("sample");
            XmlElement samplePosition  = docConfig.CreateElement("wallPosition");
            XmlElement X = docConfig.CreateElement("X");

            X.InnerText = sample.wallPositionX.ToString();
            samplePosition.AppendChild(X);
            XmlElement Y = docConfig.CreateElement("Y");

            Y.InnerText = sample.wallPositionY.ToString();
            samplePosition.AppendChild(Y);
            XmlElement Z = docConfig.CreateElement("Z");

            Z.InnerText = sample.wallPositionZ.ToString();
            samplePosition.AppendChild(Z);
            XmlElement personPosition = docConfig.CreateElement("personPosition");
            XmlElement ppX            = docConfig.CreateElement("X");

            ppX.InnerText = sample.personPositionX.ToString();
            personPosition.AppendChild(ppX);
            XmlElement ppY = docConfig.CreateElement("Y");

            ppY.InnerText = sample.personPositionY.ToString();
            personPosition.AppendChild(ppY);
            XmlElement ppZ = docConfig.CreateElement("Z");

            ppZ.InnerText = sample.personPositionZ.ToString();
            personPosition.AppendChild(ppZ);


            newSample.AppendChild(samplePosition);
            newSample.AppendChild(personPosition);
            samplePositions.AppendChild(newSample);
            newDev.AppendChild(deviceIdentifier);
            newDev.AppendChild(samplePositions);

            node.AppendChild(newDev);
            docConfig.Save(AppDomain.CurrentDomain.BaseDirectory + "\\WallProjectionAndPositionSamples.xml");
            return;
        }