Base64 encoded XML record

After my questions about data storage, it was suggested to use XML, but then obfuscate the file by encoding it with Base64. I like this idea and I have achieved what I want in XML, but I don’t know how to save it in Base64. This is my code:

XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; XmlWriter write = XmlWriter.Create("C:\\Users\\Andy\\Desktop\\database.xml", settings); write.WriteStartDocument(); write.WriteStartElement("Database"); write.WriteStartElement("Entry"); write.WriteAttributeString("key", "value"); write.WriteEndElement(); write.WriteEndElement(); write.Flush(); write.Close(); 
+4
source share
4 answers

Write it down:

 var sb = new StringBuilder(); var settings = new XmlWriterSettings(); //..settings using (var writer = XmlWriter.Create(sb, settings)) { //... } //http://stackoverflow.com/questions/1564718/using-stringwriter-for-xml-serialization var encoding = new UnicodeEncoding(); string s = Convert.ToBase64String(encoding.GetBytes(sb.ToString())); File.WriteAllText("c:\temp.txt", s); 

Read:

 string readText = File.ReadAllText("c:\temp.txt"); byte[] toDecodeByte = Convert.FromBase64String(readText); using (var stream = new MemoryStream(toDecodeByte)) { using (XmlReader reader = XmlReader.Create(stream)) { //.. read your xml } } 
+3
source

You need to convert the xmlwriter to a string like this

  using (var sw = new StringWriter()) { using (var xw = XmlWriter.Create(sw)) { // Build Xml with xw. } return sw.ToString(); } 

then converts your string to Base64. and write it to a file

+2
source

This will be the information you are looking for:

http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.writebase64.aspx

NTN

d3

+1
source

Here is an example using a MemoryStream

Save the XML data using a MemoryStream for base64, encode the data and write it to a file.

 using (var ms = new MemoryStream()) { // Memory Stream using (XmlWriter writer = XmlWriter.Create(ms,settings)) { writer.WriteStartDocument(); writer.WriteStartElement("Database"); writer.WriteStartElement("Entry"); writer.WriteAttributeString("key", "value"); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); writer.Close(); // XML Data (Debug) Console.WriteLine(new UTF8Encoding().GetString(ms.ToArray())); // Pre encoding hex (Debug) Console.WriteLine(BitConverter.ToString(ms.ToArray())); string s = Convert.ToBase64String(ms.ToArray()); Console.WriteLine(s); // (Debug) // Post encoding File.WriteAllText(@"C:\Temp\A.enc", s); } } 

Read the file back

 // Read encoded file back to xml string enc_text = File.ReadAllText(@"C:\Temp\A.enc"); Console.WriteLine(enc_text); // (Debug) // Pre encoding hex byte[] mem_bytes = Convert.FromBase64String(enc_text); Console.WriteLine(BitConverter.ToString(mem_bytes)); // (Debug) // XML Data Console.WriteLine(new UTF8Encoding().GetString(mem_bytes)); // Read byte array into Reader using (var stream = new MemoryStream(mem_bytes)) { using (XmlReader reader = XmlReader.Create(stream)) { // Use reader as desired } } 
+1
source

Source: https://habr.com/ru/post/1493210/


All Articles