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); }
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); } }