我有两个方法XmlWriter和XmlReader 我有一个名为Thumbprint的byte []。在编写器中,我将它从byte []转换为字符串并将其写入我的Xml文件。这有效。我需要弄清楚如何从字符串中读回来并将其转换回byte [] 到目前为止,这是我的代码:
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 :(得分:1)
当您不知道编码时,从字节数组转换为字符串的一般解决方案:
static string BytesToStringConverted(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
using (var streamReader = new StreamReader(stream))
{
return streamReader.ReadToEnd();
}
}
}