コード例 #1
0
        private void UpdateItems(CryptoXML source, CryptoXML target)
        {
            XmlNodeList sourceItems = source.SelectNodes("//Items/Item");

            foreach (XmlNode sourceNode in sourceItems)
            {
                string sourceId = sourceNode.Attributes.GetNamedItem("item_id").Value;
                DateTime sourceDateTime = DateTime.Parse(sourceNode.Attributes.GetNamedItem("lastupdate").Value);

                string targetPath = string.Format("//Items/Item[@item_id='{0}']", sourceId);
                XmlNodeList targetItems = target.SelectNodes(targetPath);

                if(targetItems != null && targetItems.Count > 0)
                {
                    // We have a match in the target document ...
                    XmlNode targetNode = targetItems[0];
                    DateTime targetDateTime = DateTime.Parse(targetNode.Attributes.GetNamedItem("lastupdate").Value);

                    // If the server version is older
                    if(targetDateTime < sourceDateTime)
                    {
                        // This code is useless since the server version will be replaced by the client version
                        targetNode.InnerXml = sourceNode.InnerXml;
                        targetNode.Attributes.GetNamedItem("lastupdate").InnerText = sourceNode.Attributes.GetNamedItem("lastupdate").InnerText;
                        targetNode.Attributes.GetNamedItem("active").InnerText = sourceNode.Attributes.GetNamedItem("active").InnerText;
                    }
                        // If the server version is more recent
                    else if (targetDateTime > sourceDateTime)
                    {
                        sourceNode.InnerXml = targetNode.InnerXml;
                        sourceNode.Attributes.GetNamedItem("lastupdate").InnerText = targetNode.Attributes.GetNamedItem("lastupdate").InnerText;
                        sourceNode.Attributes.GetNamedItem("active").InnerText = targetNode.Attributes.GetNamedItem("active").InnerText;
                    }
                    else
                    {
                        // Already in sync ...
                    }
                }
            }
        }
コード例 #2
0
        private void UpdateFolders( CryptoXML source, CryptoXML target)
        {
            XmlNodeList sourceItems = source.SelectNodes("//Folders/Folder");

            foreach (XmlNode sourceNode in sourceItems)
            {
                string sourceId = sourceNode.Attributes.GetNamedItem("folder_id").Value;
                DateTime sourceDateTime = DateTime.Parse(sourceNode.Attributes.GetNamedItem("lastupdate").Value);

                string targetPath = string.Format("//Folders/Folder[@folder_id='{0}']", sourceId);
                XmlNodeList targetItems = target.SelectNodes(targetPath);

                if (targetItems != null && targetItems.Count > 0)
                {
                    // We have a match in the target document ...
                    XmlNode targetNode = targetItems[0];
                    DateTime targetDateTime = DateTime.Parse(targetNode.Attributes.GetNamedItem("lastupdate").Value);

                    // If the server version is older
                    if (targetDateTime < sourceDateTime)
                    {
                        targetNode.Attributes.GetNamedItem("name").InnerText = sourceNode.Attributes.GetNamedItem("name").InnerText;
                        targetNode.Attributes.GetNamedItem("lastupdate").InnerText = sourceNode.Attributes.GetNamedItem("lastupdate").InnerText;
                        targetNode.Attributes.GetNamedItem("active").InnerText = sourceNode.Attributes.GetNamedItem("active").InnerText;
                    }
                    // If the server version is more recent
                    else if (targetDateTime > sourceDateTime)
                    {
                        sourceNode.Attributes.GetNamedItem("name").InnerText = targetNode.Attributes.GetNamedItem("name").InnerText;
                        sourceNode.Attributes.GetNamedItem("lastupdate").InnerText = targetNode.Attributes.GetNamedItem("lastupdate").InnerText;
                        sourceNode.Attributes.GetNamedItem("active").InnerText = targetNode.Attributes.GetNamedItem("active").InnerText;
                    }
                    else
                    {
                        // Already in sync ...
                    }
                }
            }
        }