Exemplo n.º 1
0
        internal void Uncompress(ref XmlDocument Packet)
        {
            XmlDocument Document     = new XmlDocument();
            string      Decompressed = DeflateTool.Decode(Packet.LastChild.LastChild.LastChild.Attributes["compressedData"].InnerText);

            Packet.FirstChild.FirstChild.RemoveAll();
            Document.LoadXml(Decompressed);
            XmlNode Child = Packet.ImportNode(Document.DocumentElement, true);

            Packet.FirstChild.FirstChild.AppendChild(Child);
            Packet.LastChild.LastChild.ReplaceChild(Packet.LastChild.LastChild.LastChild, Child);
        }
Exemplo n.º 2
0
        internal void Compress(ref XDocument xDocument)
        {
            var xmlDocument = new XmlDocument();

            using (var xmlReader = xDocument.CreateReader())
            {
                xmlDocument.Load(xmlReader);
            }

            XmlDocument Header = new XmlDocument();

            XmlDocument Answ = xmlDocument;
            XmlNode     Node = Answ.FirstChild.FirstChild.FirstChild;

            string Name           = Node.Name;
            string Encoded        = DeflateTool.Encode(Node.OuterXml);
            int    OriginalLenght = Encoding.UTF8.GetByteCount(Node.OuterXml);

            Header.LoadXml($"<data query_name='{Name}' compressedData='{Encoded}' originalSize='{OriginalLenght}'/>");

            foreach (XmlAttribute Att in Node.Attributes)
            {
                XmlAttribute CreatedAttrib = Header.CreateAttribute(Att.Name);
                CreatedAttrib.InnerText = Att.InnerText;
                Header.FirstChild.Attributes.Prepend(CreatedAttrib);
            }
            XmlNode Imported = Answ.ImportNode(Header.DocumentElement, true);

            Answ.FirstChild.FirstChild.RemoveAll();
            Answ.FirstChild.FirstChild.PrependChild(Imported);

            using (var nodeReader = new XmlNodeReader(xmlDocument))
            {
                nodeReader.MoveToContent();
                xDocument = XDocument.Load(nodeReader);
            }
        }