2016-08-01 3 views
0

У меня есть два метода XmlWriter и XmlReader.
У меня есть байт [], называемый Thumbprint. В писателе я конвертирую его из байта [] в строку и записываю в свой Xml-файл. Это работает. Мне нужно выяснить, как прочитать его обратно из строки и преобразовать обратно в байт [].
Вот мой код до сих пор:строка в байт [] преобразование с использованием XmlWriter и XmlReader

public void WriteXml(XmlWriter writer) 
     { 

      writer.WriteStartElement("agent");   


      writer.WriteStartElement("thumbprint"); 
      var encoding = new UnicodeEncoding();  
      if (Thumbprint != null) 
      { 
       string base64 = System.Convert.ToBase64String(encoding.GetBytes(Thumbprint.ToString())); 
       writer.WriteCData(base64); 
      } 
      else 
      { 
       writer.WriteEndElement(); 
      } 
     } 

public void ReadXml(XmlReader reader) 
     { 
      if (reader.IsStartElement("agent")) 
      {  
       // 
       // Read past <agent> 
       // 
       reader.Read(); 

       while (true) 
       { 
        if (reader.IsStartElement("thumbprint")) 
        { 
         byte[] toDecodeByte = System.Convert.FromBase64String(Thumbprint.ToString()); 
         Thumbprint = toDecodeByte; 
        } 
        else 
        { 
         // 
         // Read </agent> 
         // 
         reader.MoveToContent(); 
         reader.ReadEndElement(); 
         break; 
        } 
       } 
      } 
      else 
      { 
       throw new XmlException("Expected <agent> element was not present"); 
      } 
     } 

Xml Вход:

<thumbprint> 
    <![CDATA[UwB5AHMAdABlAG0ALgBCAHkAdABlAFsAXQA=]]> 
</thumbprint> 
+0

Можем ли мы увидеть пример вашего XML-файла (ввод)? –

+0

Несомненно. Я добавил фрагмент Xml в OP. До сих пор я пытался использовать этот пример здесь: http://stackoverflow.com/questions/17835928/write-xml-in-base64-encoding, но я не могу заставить его работать. Я также пробовал по-другому, но это тоже не работает. Если вы посмотрите на метод чтения в OP, я также обновил то, что я пробовал. – Tim

ответ

1

Общее решение для преобразования из массива байтов в строку, если вы не знаете, кодирование:

static string BytesToStringConverted(byte[] bytes) 
{ 
    using (var stream = new MemoryStream(bytes)) 
    { 
     using (var streamReader = new StreamReader(stream)) 
     { 
      return streamReader.ReadToEnd(); 
     } 
    } 
} 
Смежные вопросы