xml 序列化 字节数组属性遇到的问题

ysgan 2009-12-20 03:34:28
1.自定义的类:
Header h = new Header();
h.message = new byte[] { 1, 0, 0, 1 }; h.session = 5;
2.xml 序列化:
XmlSerializer xmlsl = new XmlSerializer(typeof(Header));
System.IO.TextWriter writer = new StreamWriter("c:\\header.xml");
xmlsl.Serialize(writer, p);
writer.Close();

3.得到xml文件:
<header>
<message>AQAAAQ==</message>
<session>5</session>
</header>

4.问题是:如果我不通过 Deserialize(反序列化,有原因就不详述了) ,比如通过xmldocument 取得值后将message 属性值 AQAAAQ==
还原出原来的字节属性值?

我这样尝试过(其它编码也尝试过):
byte[] b = System.Text.Encoding.UTF8.GetBytes("AQAAAQ==");
得不到new byte[] { 1, 0, 0, 1 };
string strbyte = System.Text.Encoding.UTF8.GetString(new byte[] { 1, 0, 0, 1 });
得不到AQAAAQ==

不知道有谁经历过,给予指点.
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
海风周 2011-05-12
  • 打赏
  • 举报
回复
支持楼主。
xu251235394 2010-02-10
  • 打赏
  • 举报
回复
终于找到和我有同样问题的人了 嘿嘿试试看
ysgan 2009-12-21
  • 打赏
  • 举报
回复
结帖。
ysgan 2009-12-21
  • 打赏
  • 举报
回复
原来是Base64编码:
这样可以还原为原来属性
byte[] bs = Convert.ToBase64 String(("AQAAAQ=="))
ysgan 2009-12-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sp1234 的回复:]
将对象进行xml序列化,如果你要得到对象,就必须反序列化。如果你不“反序列化,有原因就不详述了”,那么对不起,你自己仍然需要用你的开发过工具自己写一个反序列化程序。例如你使用colbol,那么你就应该自己用colbol写一个.net反序列同样功能的程序。

逻辑岂可儿戏?如果开发中遇到“有原因就不详述了”这样的合作方,直接找别人取代它就可以了。
[/Quote]
===========================================
1.其实对方(不是.net平台)传过来的是一个xml文件
2.我设计时是想先用xmlDocumnet取得这个xml文件要序列化的对象类型[因为会有多个类型,不知道对方会事先发哪个类],即Message
3.然后根据 message 取得要充序列化的对象类型,后才整体反序列化对象。
  • 打赏
  • 举报
回复
将对象进行xml序列化,如果你要得到对象,就必须反序列化。如果你不“反序列化,有原因就不详述了”,那么对不起,你自己仍然需要用你的开发过工具自己写一个反序列化程序。例如你使用colbol,那么你就应该自己用colbol写一个.net反序列同样功能的程序。

逻辑岂可儿戏?如果开发中遇到“有原因就不详述了”这样的合作方,直接找别人取代它就可以了。
ysgan 2009-12-20
  • 打赏
  • 举报
回复
h.message = new byte[] { 1, 0, 0, 1 };
那你应该把上面的弄成字符串:
message应该弄成字符串类型
h.message = "byte[] { 1, 0, 0, 1 }";
然后在XML文件里看到的就是你要的
=========================================
这个是不能变的,相当于我现在要解析这个xml文件,而不是把别人的类定义给改了
  • 打赏
  • 举报
回复
h.message = new byte[] { 1, 0, 0, 1 };
那你应该把上面的弄成字符串:
message应该弄成字符串类型
h.message = "byte[] { 1, 0, 0, 1 }";
然后在XML文件里看到的就是你要的
tianliang1 2009-12-20
  • 打赏
  • 举报
回复
学习。。。帮顶。。。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧