2016-08-01 9 views
0

XmlWriterとXmlReaderの2つのメソッドがあります。
私は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

OPにXMLスニペットを追加しました。これまでのところ私はここから例を使用しようとしました:http://stackoverflow.com/questions/17835928/write-xml-in-base64-encodingしかし、私はこれを動作させるように見えることはできません。私はまた別の方法を試みたが、それはどちらも動作していない。あなたがOPのreadメソッドを見ても、私が試したことで更新されています。 – Tim

答えて

1

一般解:

static string BytesToStringConverted(byte[] bytes) 
{ 
    using (var stream = new MemoryStream(bytes)) 
    { 
     using (var streamReader = new StreamReader(stream)) 
     { 
      return streamReader.ReadToEnd(); 
     } 
    } 
} 
関連する問題