包含字节数组的xml问题

时间:2011-01-26 04:12:15

标签: c# xml-serialization

你好我使用一种消息解析形式,我将字段写入缓冲流,然后提取一个字节数组重复该流

MyMessage _message = new MyMessage("me","you",MessageType.peer_message,4252422) ;
// in the constructor String sender,String receiver,MessageType(enumaraition) m_type,Int32 id 

byte [] buffer = myEncoder.encode(message) ;

现在,当我将它传递给myDecoder时,它会在同一个metter中对其进行解码,效果很好! 我怎么做不是问题

我的问题是,在一些misscommunicaition的情况下,我需要存储byte []数组(缓冲区)以供进一步使用,我正在尝试在标记下的xmlDocumant中执行此操作  在内部文本中,我想在哪里保存BYTES阵列

我试过 - > utf8Encoding.Ascii.getString(buffer)保存某种代表性 但它改变了字段的值,而不是字符串......当我用

取出它时
utf8Encoding.Ascii.getBytes(packet_node.innerText) ; 

1)问题是如何将这些字节保存到XMLNODE 2)我也试过在每个标签中逐一编写字段

 <Packet>
      <sender>me</sender>
      <receiver>him</receiver>
      <MessageType> ..?? how would  i represent a byte as a string ? </MessageType> 
      <Id> 4252353523 </Id> here i have no problem but i still would have to always prase the value back and forth in other uses from int to string ..

</Packet> 

3)所以我的结论是将字节数组序列化为xmldocument ..只是我不希望它成为文档而只是现有文档中的一个节点

1 个答案:

答案 0 :(得分:4)

将其编码为base-64字符串。只要记住在阅读它时解码它。

byte[] bytes = ...;
string encoded = Convert.ToBase64String(bytes);
byte[] decoded = Convert.FromBase64String(encoded);